26 Sep, 2013

4 commits

  • Update the STI driver by setting cpu_possible_mask to make EMEV2
    SMP work as expected together with the ARM broadcast timer.

    This breakage was introduced by:

    f7db706 ARM: 7674/1: smp: Avoid dummy clockevent being preferred over real hardware clock-event

    Without this fix SMP operation is broken on EMEV2 since no
    broadcast timer interrupts trigger on the secondary CPU cores.

    Signed-off-by: Magnus Damm
    Tested-by: Simon Horman
    Reviewed-by: Stephen Boyd
    Signed-off-by: Simon Horman
    Signed-off-by: Daniel Lezcano

    Magnus Damm
     
  • Clocksource devices provided by DT can be disabled (status != "okay").
    Instead of registering clocksource drivers for disabled nodes, respect
    the device's status by skiping disabled nodes.

    Signed-off-by: Sebastian Hesselbarth
    Signed-off-by: Daniel Lezcano

    Sebastian Hesselbarth
     
  • Some variants of Exynos MCT, namely exynos4210-mct at the moment, use
    normal, shared interrupts for local timers. This means that each
    interrupt must have correct affinity set to fire only on CPU
    corresponding to given local timer.

    However after recent conversion of clocksource drivers to not use the
    local timer API for local timer initialization any more, the point of
    time when local timers get initialized changed and irq_set_affinity()
    fails because the CPU is not marked as online yet.

    This patch fixes this by moving the call to irq_set_affinity() to
    CPU_ONLINE notification, so the affinity is being set when the CPU goes
    online.

    This fixes a regression introduced by commit
    ee98d27df6 ARM: EXYNOS4: Divorce mct from local timer API
    which rendered all Exynos4210 based boards unbootable due to
    failing irq_set_affinity() making local timers inoperatible.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Kyungmin Park
    Acked-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano

    Tomasz Figa
     
  • This commit:
    573145f08c2b92c45498468afbbba909f6ce6135
    clocksource: armada-370-xp: Use CLOCKSOURCE_OF_DECLARE

    replaced a call to the driver's timer initialization by a call to
    clocksource_of_init(). However, it failed to select CONFIG_CLKSRC_OF.

    Fix this by selecting CONFIG_CLKSRC_OF for Armada370/XP machines.
    Without this change the kernel is stuck at: 'Calibrating delay loop...'.

    Signed-off-by: Jean Pihet
    Acked-by: Ezequiel Garcia
    Signed-off-by: Daniel Lezcano

    Jean Pihet
     

17 Sep, 2013

1 commit

  • Pull timer code update from Thomas Gleixner:
    - armada SoC clocksource overhaul with a trivial merge conflict
    - Minor improvements to various SoC clocksource drivers

    * 'timers/core' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource: armada-370-xp: Add detailed clock requirements in devicetree binding
    clocksource: armada-370-xp: Get reference fixed-clock by name
    clocksource: armada-370-xp: Replace WARN_ON with BUG_ON
    clocksource: armada-370-xp: Fix device-tree binding
    clocksource: armada-370-xp: Introduce new compatibles
    clocksource: armada-370-xp: Use CLOCKSOURCE_OF_DECLARE
    clocksource: armada-370-xp: Simplify TIMER_CTRL register access
    clocksource: armada-370-xp: Use BIT()
    ARM: timer-sp: Set dynamic irq affinity
    ARM: nomadik: add dynamic irq flag to the timer
    clocksource: sh_cmt: 32-bit control register support
    clocksource: em_sti: Convert to devm_* managed helpers

    Linus Torvalds
     

10 Sep, 2013

1 commit

  • Pull clock framework changes from Michael Turquette:
    "The common clk framework changes for 3.12 are dominated by clock
    driver patches, both new drivers and fixes to existing. A high
    percentage of these are for Samsung platforms like Exynos. Core
    framework fixes and some new features like automagical clock
    re-parenting round out the patches"

    * tag 'clk-for-linus-3.12' of git://git.linaro.org/people/mturquette/linux: (102 commits)
    clk: only call get_parent if there is one
    clk: samsung: exynos5250: Simplify registration of PLL rate tables
    clk: samsung: exynos4: Register PLL rate tables for Exynos4x12
    clk: samsung: exynos4: Register PLL rate tables for Exynos4210
    clk: samsung: exynos4: Reorder registration of mout_vpllsrc
    clk: samsung: pll: Add support for rate configuration of PLL46xx
    clk: samsung: pll: Use new registration method for PLL46xx
    clk: samsung: pll: Add support for rate configuration of PLL45xx
    clk: samsung: pll: Use new registration method for PLL45xx
    clk: samsung: exynos4: Rename exynos4_plls to exynos4x12_plls
    clk: samsung: exynos4: Remove checks for DT node
    clk: samsung: exynos4: Remove unused static clkdev aliases
    clk: samsung: Modify _get_rate() helper to use __clk_lookup()
    clk: samsung: exynos4: Use separate aliases for cpufreq related clocks
    clocksource: samsung_pwm_timer: Get clock from device tree
    ARM: dts: exynos4: Specify PWM clocks in PWM node
    pwm: samsung: Update DT bindings documentation to cover clocks
    clk: Move symbol export to proper location
    clk: fix new_parent dereference before null check
    clk: wm831x: Initialise wm831x pointer on init
    ...

    Linus Torvalds
     

07 Sep, 2013

4 commits

  • Pull ARM SoC board updates from Olof Johansson:
    "Board updates for 3.12. Again, a bit of domain overlap with SoC and
    DT branches, but most of this is around legacy code and board support.
    We've found that platform maintainers have a hard time separating all
    of these out and might move towards fewer branches for next release.

    - Removal of a number of Marvell Kirkwood board files, since contents
    is now common and mostly configured via DT.
    - Device-tree updates for Marvell Dove, including irqchip and
    clocksource setup.
    - Defconfig updates. Gotta go somewhere. One new one for Renesas
    Lager.
    - New backlight drivers for backlights used on Renesas shmobile
    platforms.
    - Removal of Renesas leds driver.
    - Shuffling of some of the new Broadcom platforms to give room for
    others in the same mach directory. More in 3.13"

    * tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (67 commits)
    mmc: sdhci-bcm-kona: Staticize sdhci_bcm_kona_card_event
    mmc: sdhci-bcm-kona: Remove unneeded version.h inclusion
    ARM: bcm: Make secure API call optional
    ARM: DT: binding fixup to align with vendor-prefixes.txt (drivers)
    ARM: mmc: fix NONREMOVABLE test in sdhci-bcm-kona
    ARM: bcm: Rename board_bcm
    mmc: sdhci-bcm-kona: make linker-section warning go away
    ARM: tegra: defconfig updates
    ARM: dove: add initial DT file for Globalscale D2Plug
    ARM: dove: add GPIO IR receiver node to SolidRun CuBox
    ARM: dove: add common pinmux functions to DT
    ARM: dove: add cpu device tree node
    ARM: dove: update dove_defconfig with SI5351, PCI, and xHCI
    arch/arm/mach-kirkwood: Avoid using ARRAY_AND_SIZE(e) as a function argument
    ARM: kirkwood: fix DT building and update defconfig
    ARM: kirkwood: Remove all remaining trace of DNS-320/325 platform code
    ARM: configs: disable DEBUG_LL in bcm_defconfig
    ARM: bcm281xx: Board specific reboot code
    ARM bcm281xx: Turn on socket & network support.
    ARM: bcm281xx: Turn on L2 cache.
    ...

    Linus Torvalds
     
  • When booting with device tree static clkdev aliases should not be used.
    This patch modifies the samsung_pwm_timer driver to use DT-based clock
    lookup when booting with device tree.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Kyungmin Park
    Reviewed-by: Sylwester Nawrocki
    Signed-off-by: Mike Turquette

    Tomasz Figa
     
  • Pull ARM SoC cleanups from Olof Johansson:
    "This branch contains code cleanups, moves and removals for 3.12.

    There's a large number of various cleanups, and a nice net removal of
    13500 lines of code.

    Highlights worth mentioning are:

    - A series of patches from Stephen Boyd removing the ARM local timer
    API.
    - Move of Qualcomm MSM IOMMU code to drivers/iommu.
    - Samsung PWM driver cleanups from Tomasz Figa, removing legacy PWM
    driver and switching over to the drivers/pwm one.
    - Removal of some unusued auto-generated headers for OMAP2+ (PRM/CM).

    There's also a move of a header file out of include/linux/i2c/ to
    platform_data, where it really belongs. It touches mostly ARM
    platform code for include changes so we took it through our tree"

    * tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (83 commits)
    ARM: OMAP2+: Add back the define for AM33XX_RST_GLOBAL_WARM_SW_MASK
    gpio: (gpio-pca953x) move header to linux/platform_data/
    arm: zynq: hotplug: Remove unreachable code
    ARM: SAMSUNG: Remove unnecessary exynos4_default_sdhci*()
    tegra: simplify use of devm_ioremap_resource
    ARM: SAMSUNG: Remove plat/regs-timer.h header
    ARM: SAMSUNG: Remove remaining uses of plat/regs-timer.h header
    ARM: SAMSUNG: Remove pwm-clock infrastructure
    ARM: SAMSUNG: Remove old PWM timer platform devices
    pwm: Remove superseded pwm-samsung-legacy driver
    ARM: SAMSUNG: Modify board files to use new PWM platform device
    ARM: SAMSUNG: Rework private data handling in dev-backlight
    pwm: Add new pwm-samsung driver
    ARM: mach-mvebu: remove redundant DT parsing and validation
    ARM: msm: Only compile io.c on platforms that use it
    iommu/msm: Move mach includes to iommu directory
    ARM: msm: Remove devices-iommu.c
    ARM: msm: Move mach/board.h contents to common.h
    ARM: msm: Migrate msm_timer to CLOCKSOURCE_OF_DECLARE
    ARM: msm: Remove TMR and TMR0 static mappings
    ...

    Linus Torvalds
     
  • Pull trivial tree from Jiri Kosina:
    "The usual trivial updates all over the tree -- mostly typo fixes and
    documentation updates"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (52 commits)
    doc: Documentation/cputopology.txt fix typo
    treewide: Convert retrun typos to return
    Fix comment typo for init_cma_reserved_pageblock
    Documentation/trace: Correcting and extending tracepoint documentation
    mm/hotplug: fix a typo in Documentation/memory-hotplug.txt
    power: Documentation: Update s2ram link
    doc: fix a typo in Documentation/00-INDEX
    Documentation/printk-formats.txt: No casts needed for u64/s64
    doc: Fix typo "is is" in Documentations
    treewide: Fix printks with 0x%#
    zram: doc fixes
    Documentation/kmemcheck: update kmemcheck documentation
    doc: documentation/hwspinlock.txt fix typo
    PM / Hibernate: add section for resume options
    doc: filesystems : Fix typo in Documentations/filesystems
    scsi/megaraid fixed several typos in comments
    ppc: init_32: Fix error typo "CONFIG_START_KERNEL"
    treewide: Add __GFP_NOWARN to k.alloc calls with v.alloc fallbacks
    page_isolation: Fix a comment typo in test_pages_isolated()
    doc: fix a typo about irq affinity
    ...

    Linus Torvalds
     

03 Sep, 2013

6 commits


27 Aug, 2013

1 commit


22 Aug, 2013

3 commits


21 Aug, 2013

3 commits


14 Aug, 2013

1 commit

  • From Tomasz Figa:
    Here is the Samsung PWM cleanup series. Particular patches of the series
    involve following modifications:
    - fixing up few things in samsung_pwm_timer clocksource driver,
    - moving remaining Samsung platforms to the new clocksource driver,
    - removing old clocksource driver,
    - adding new multiplatform- and DT-aware PWM driver,
    - moving all Samsung platforms to use the new PWM driver,
    - removing old PWM driver,
    - removing all PWM-related code that is not used anymore.

    * tag 'v3.12-pwm-cleanup-for-olof' of git://github.com/tom3q/linux: (684 commits)
    ARM: SAMSUNG: Remove plat/regs-timer.h header
    ARM: SAMSUNG: Remove remaining uses of plat/regs-timer.h header
    ARM: SAMSUNG: Remove pwm-clock infrastructure
    ARM: SAMSUNG: Remove old PWM timer platform devices
    pwm: Remove superseded pwm-samsung-legacy driver
    ARM: SAMSUNG: Modify board files to use new PWM platform device
    ARM: SAMSUNG: Rework private data handling in dev-backlight
    pwm: Add new pwm-samsung driver
    pwm: samsung: Rename to pwm-samsung-legacy
    ARM: SAMSUNG: Remove unused PWM timer IRQ chip code
    ARM: SAMSUNG: Remove old samsung-time driver
    ARM: SAMSUNG: Move all platforms to new clocksource driver
    ARM: SAMSUNG: Set PWM platform data
    ARM: SAMSUNG: Add new PWM platform device
    ARM: SAMSUNG: Unify base address definitions of timer block
    clocksource: samsung_pwm_timer: Handle suspend/resume correctly
    clocksource: samsung_pwm_timer: Do not use clocksource_mmio
    clocksource: samsung_pwm_timer: Cache clocksource register address
    clocksource: samsung_pwm_timer: Correct definition of AUTORELOAD bit
    clocksource: samsung_pwm_timer: Do not request PWM mem region
    + v3.11-rc4

    Conflicts:
    arch/arm/Kconfig.debug

    Signed-off-by: Olof Johansson

    Olof Johansson
     

06 Aug, 2013

5 commits

  • Current suspend/resume handling of the driver was broken, because:
    - periodic timer was being enabled in CLOCK_EVT_MODE_RESUME mode, which
    does not seem to be correct behavior looking at other platforms,
    - PWM divisors need to be restored, but they were not,
    - clockevent interrupt mask needs to be restored, but it was not,
    - clocksource was being restored in clockevent resume callback.

    This patch fixes issues mentioned above, making suspend/resume handling
    in the driver correct.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Sylwester Nawrocki
    Tested-by: Heiko Stuebner
    Tested-by: Mark Brown
    Tested-by: Sylwester Nawrocki
    Acked-by: Arnd Bergmann
    Acked-by: Daniel Lezcano

    Tomasz Figa
     
  • In case of Samsung PWM timer, clocksource MMIO can not be used, because
    custom suspend/resume callbacks are required.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Daniel Lezcano
    Reviewed-by: Sylwester Nawrocki
    Tested-by: Heiko Stuebner
    Tested-by: Mark Brown
    Tested-by: Sylwester Nawrocki
    Acked-by: Arnd Bergmann

    Tomasz Figa
     
  • Instead of calculating register every time the timer should be read,
    we can just do it one time at initialization and store the address in
    driver data.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Sylwester Nawrocki
    Tested-by: Heiko Stuebner
    Tested-by: Mark Brown
    Tested-by: Sylwester Nawrocki
    Acked-by: Arnd Bergmann

    Tomasz Figa
     
  • PWM channel 4 has its autoreload bit located at different position. This
    patch fixes the driver to account for that.

    This fixes a problem with the clocksource hanging after it overflows because
    it is not reloaded any more.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Sylwester Nawrocki
    Tested-by: Heiko Stuebner
    Tested-by: Mark Brown
    Tested-by: Sylwester Nawrocki
    Acked-by: Arnd Bergmann

    Tomasz Figa
     
  • PWM registers are shared between clocksource and PWM drivers and so can
    not be claimed for exclusive use.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Sylwester Nawrocki
    Tested-by: Heiko Stuebner
    Tested-by: Mark Brown
    Tested-by: Sylwester Nawrocki
    Acked-by: Arnd Bergmann

    Tomasz Figa
     

01 Aug, 2013

5 commits

  • Add support for the memory mapped timers by filling in the
    read/write functions and adding some parsing code. Note that we
    only register one clocksource, preferring the cp15 based
    clocksource over the mmio one.

    To keep things simple we register one global clockevent. This
    covers the case of UP and SMP systems with only mmio hardware and
    systems where the memory mapped timers are used as the broadcast
    timer in low power modes.

    The DT binding allows for per-CPU memory mapped timers in case we
    want to support that in the future, but the code isn't added
    here. We also don't do much for hypervisor support, although it
    should be possible to support it by searching for at least two
    frames where one frame has the virtual capability and then
    updating KVM timers to support it.

    Cc: Mark Rutland
    Cc: Marc Zyngier
    Cc: Rob Herring
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • We're going to introduce support to read and write the memory
    mapped timer registers in the next patch, so push the cp15
    read/write functions one level deeper. This simplifies the next
    patch and makes it clearer what's going on.

    Cc: Mark Rutland
    Cc: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • There isn't any reason why we don't pass the event here and we'll
    need it in the near future for memory mapped arch timers anyway.

    Cc: Mark Rutland
    Cc: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • Using an enum for the register we wish to access allows newer
    compilers to determine if we've forgotten a case in our switch
    statement. This allows us to remove the BUILD_BUG() instances in
    the arm64 port, avoiding problems where optimizations may not
    happen.

    To try and force better code generation we're currently marking
    the accessor functions as inline, but newer compilers can ignore
    the inline keyword unless it's marked __always_inline. Luckily on
    arm and arm64 inline is __always_inline, but let's make
    everything __always_inline to be explicit.

    Suggested-by: Thomas Gleixner
    Cc: Thomas Gleixner
    Cc: Mark Rutland
    Cc: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • bitops.h included implicitly, add #include

    Signed-off-by: Jonas Jensen
    Signed-off-by: Daniel Lezcano

    Jonas Jensen
     

24 Jul, 2013

1 commit

  • …/davidb/linux-msm into next/cleanup

    From Stephen Boyd:

    Now that we have a generic arch hook for broadcast we can remove the
    local timer API entirely. Doing so will reduce code in ARM core, reduce
    the architecture dependencies of our timer drivers, and simplify the code
    because we no longer go through an architecture layer that is essentially
    a hotplug notifier.

    * tag 'remove-local-timers' of git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm:
    ARM: smp: Remove local timer API
    clocksource: time-armada-370-xp: Divorce from local timer API
    clocksource: time-armada-370-xp: Fix sparse warning
    ARM: msm: Divorce msm_timer from local timer API
    ARM: PRIMA2: Divorce timer-marco from local timer API
    ARM: EXYNOS4: Divorce mct from local timer API
    ARM: OMAP2+: Divorce from local timer API
    ARM: smp_twd: Divorce smp_twd from local timer API
    ARM: smp: Remove duplicate dummy timer implementation

    Resolved a large number of conflicts due to __cpuinit cleanups, etc.

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     

18 Jul, 2013

5 commits