09 Jan, 2015

1 commit

  • commit 0b46b8a718c6e90910a1b1b0fe797be3c167e186 upstream.

    This is a bug fix for using physical arch timers when
    the arch_timer_use_virtual boolean is false. It restores the
    arch_counter_get_cntpct() function after removal in

    0d651e4e "clocksource: arch_timer: use virtual counters"

    We need this on certain ARMv7 systems which are architected like this:

    * The firmware doesn't know and doesn't care about hypervisor mode and
    we don't want to add the complexity of hypervisor there.

    * The firmware isn't involved in SMP bringup or resume.

    * The ARCH timer come up with an uninitialized offset between the
    virtual and physical counters. Each core gets a different random
    offset.

    * The device boots in "Secure SVC" mode.

    * Nothing has touched the reset value of CNTHCTL.PL1PCEN or
    CNTHCTL.PL1PCTEN (both default to 1 at reset)

    One example of such as system is RK3288 where it is much simpler to
    use the physical counter since there's nobody managing the offset and
    each time a core goes down and comes back up it will get reinitialized
    to some other random value.

    Fixes: 0d651e4e65e9 ("clocksource: arch_timer: use virtual counters")
    Signed-off-by: Sonny Rao
    Acked-by: Catalin Marinas
    Acked-by: Daniel Lezcano
    Signed-off-by: Olof Johansson
    Signed-off-by: Greg Kroah-Hartman

    Sonny Rao
     

19 Nov, 2014

1 commit

  • The interrupts were activated and the handler registered before the clockevent
    was registered in the probe function.

    The interrupt handler, however, was making the assumption that the clockevent
    device was registered.

    That could cause a null pointer dereference if the timer interrupt was firing
    during this narrow window.

    Fix that by moving the clockevent registration before the interrupt is enabled.

    Reported-by: Roman Byshko
    Signed-off-by: Maxime Ripard
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Lezcano

    Maxime Ripard
     

27 Oct, 2014

1 commit

  • Commit c387f07e6205 (clocksource: arm_arch_timer: Discard unavailable
    timers correctly) changed the way the driver makes sure both the memory
    and system-register timers have been probed before finalizing the probing.

    There is a interesting flaw in this logic that leads to this final step
    never to be executed. Things seems to work pretty well until something
    actually needs the data that is produced during this final stage.

    For example, KVM explodes on the first run of a guest when executed on
    a platform that has both memory and sysreg nodes (Juno, for example).

    Just fix the damned logic, and enjoy booting VMs again.

    Tested on a Juno system.

    Cc: Sudeep Holla
    Cc: Stephen Boyd
    Cc: Mark Rutland
    Cc: Daniel Lezcano
    Cc: Christoffer Dall
    Reported-by: Riku Voipio
    Acked-by: Mark Rutland
    Acked-by: Sudeep Holla
    Tested-by: Sudeep Holla
    Signed-off-by: Marc Zyngier
    Signed-off-by: Daniel Lezcano

    Marc Zyngier
     

15 Oct, 2014

1 commit

  • Pull percpu consistent-ops changes from Tejun Heo:
    "Way back, before the current percpu allocator was implemented, static
    and dynamic percpu memory areas were allocated and handled separately
    and had their own accessors. The distinction has been gone for many
    years now; however, the now duplicate two sets of accessors remained
    with the pointer based ones - this_cpu_*() - evolving various other
    operations over time. During the process, we also accumulated other
    inconsistent operations.

    This pull request contains Christoph's patches to clean up the
    duplicate accessor situation. __get_cpu_var() uses are replaced with
    with this_cpu_ptr() and __this_cpu_ptr() with raw_cpu_ptr().

    Unfortunately, the former sometimes is tricky thanks to C being a bit
    messy with the distinction between lvalues and pointers, which led to
    a rather ugly solution for cpumask_var_t involving the introduction of
    this_cpu_cpumask_var_ptr().

    This converts most of the uses but not all. Christoph will follow up
    with the remaining conversions in this merge window and hopefully
    remove the obsolete accessors"

    * 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (38 commits)
    irqchip: Properly fetch the per cpu offset
    percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t -fix
    ia64: sn_nodepda cannot be assigned to after this_cpu conversion. Use __this_cpu_write.
    percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t
    Revert "powerpc: Replace __get_cpu_var uses"
    percpu: Remove __this_cpu_ptr
    clocksource: Replace __this_cpu_ptr with raw_cpu_ptr
    sparc: Replace __get_cpu_var uses
    avr32: Replace __get_cpu_var with __this_cpu_write
    blackfin: Replace __get_cpu_var uses
    tile: Use this_cpu_ptr() for hardware counters
    tile: Replace __get_cpu_var uses
    powerpc: Replace __get_cpu_var uses
    alpha: Replace __get_cpu_var
    ia64: Replace __get_cpu_var uses
    s390: cio driver &__get_cpu_var replacements
    s390: Replace __get_cpu_var uses
    mips: Replace __get_cpu_var uses
    MIPS: Replace __get_cpu_var uses in FPU emulator.
    arm: Replace __this_cpu_ptr with raw_cpu_ptr
    ...

    Linus Torvalds
     

09 Oct, 2014

2 commits

  • Pull timer updates from Thomas Gleixner:
    "Nothing really exciting this time:

    - a few fixlets in the NOHZ code

    - a new ARM SoC timer abomination. One should expect that we have
    enough of them already, but they insist on inventing new ones.

    - the usual bunch of ARM SoC timer updates. That feels like herding
    cats"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource: arm_arch_timer: Consolidate arch_timer_evtstrm_enable
    clocksource: arm_arch_timer: Enable counter access for 32-bit ARM
    clocksource: arm_arch_timer: Change clocksource name if CP15 unavailable
    clocksource: sirf: Disable counter before re-setting it
    clocksource: cadence_ttc: Add support for 32bit mode
    clocksource: tcb_clksrc: Sanitize IRQ request
    clocksource: arm_arch_timer: Discard unavailable timers correctly
    clocksource: vf_pit_timer: Support shutdown mode
    ARM: meson6: clocksource: Add Meson6 timer support
    ARM: meson: documentation: Add timer documentation
    clocksource: sh_tmu: Document r8a7779 binding
    clocksource: sh_mtu2: Document r7s72100 binding
    clocksource: sh_cmt: Document SoC specific bindings
    timerfd: Remove an always true check
    nohz: Avoid tick's double reprogramming in highres mode
    nohz: Fix spurious periodic tick behaviour in low-res dynticks mode

    Linus Torvalds
     
  • Pull ARM SoC driver updates from Arnd Bergmann:
    "These are changes for drivers that are intimately tied to some SoC and
    for some reason could not get merged through the respective subsystem
    maintainer tree.

    Most of the new code is for the Keystone Navigator driver, which is
    new base support that is going to be needed for their hardware
    accelerated network driver and other units.

    Most of the commits are for moving old code around from at91 and omap
    for things that are done in device drivers nowadays.

    - at91: move reset, poweroff, memory and clocksource code into
    drivers directories
    - socfpga: add edac driver (through arm-soc, as requested by Boris)
    - omap: move omap-intc code to drivers/irqchip
    - sunxi: added an RTC driver for sun6i
    - omap: mailbox driver related changes
    - keystone: support for the "Navigator" component
    - versatile: new reboot, led and soc drivers"

    * tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (92 commits)
    bus: arm-ccn: Fix spurious warning message
    leds: add device tree bindings for register bit LEDs
    soc: add driver for the ARM RealView
    power: reset: driver for the Versatile syscon reboot
    leds: add a driver for syscon-based LEDs
    drivers/soc: ti: fix build break with modules
    MAINTAINERS: Add Keystone Multicore Navigator drivers entry
    soc: ti: add Keystone Navigator DMA support
    Documentation: dt: soc: add Keystone Navigator DMA bindings
    soc: ti: add Keystone Navigator QMSS driver
    Documentation: dt: soc: add Keystone Navigator QMSS bindings
    rtc: sunxi: Depend on platforms sun4i/sun7i that actually have the rtc
    rtc: sun6i: Add sun6i RTC driver
    irqchip: omap-intc: remove unnecessary comments
    irqchip: omap-intc: correct maximum number or MIR registers
    irqchip: omap-intc: enable TURBO idle mode
    irqchip: omap-intc: enable IP protection
    irqchip: omap-intc: remove unnecesary of_address_to_resource() call
    irqchip: omap-intc: comment style cleanup
    irqchip: omap-intc: minor improvement to omap_irq_pending()
    ...

    Linus Torvalds
     

29 Sep, 2014

9 commits

  • The arch_timer_evtstrm_enable hooks in arm and arm64 are substantially
    similar, the only difference being a CONFIG_COMPAT-conditional section
    which is relevant only for arm64. Copy the arm64 version to the
    driver, removing the arch-specific hooks.

    Signed-off-by: Nathan Lynch
    Signed-off-by: Daniel Lezcano
    Acked-by: Will Deacon

    Nathan Lynch
     
  • The only difference between arm and arm64's implementations of
    arch_counter_set_user_access is that 32-bit ARM does not enable user
    access to the virtual counter. We want to enable this access for the
    32-bit ARM VDSO, so copy the arm64 version to the driver itself, and
    remove the arch-specific implementations.

    Signed-off-by: Nathan Lynch
    Signed-off-by: Daniel Lezcano
    Acked-by: Will Deacon

    Nathan Lynch
     
  • The arm and arm64 VDSOs need CP15 access to the architected counter.
    If this is unavailable (which is allowed by ARM v7), indicate this by
    changing the clocksource name to "arch_mem_counter" before registering
    the clocksource.

    Suggested by Stephen Boyd.

    Signed-off-by: Nathan Lynch
    Reviewed-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Will Deacon

    Nathan Lynch
     
  • According to HW spec, we have to disable the counter before setting
    it, if we don't this, in pressure test, sometimes the timer might
    not generate interrupt any more.

    And this patch also fixes a typo for register set by changing 0x7
    to 0x3. 0x7 is loop mode in HW, but here we are using oneshot 0x3.

    Signed-off-by: Hao Liu
    Signed-off-by: Barry Song
    Signed-off-by: Daniel Lezcano

    Hao Liu
     
  • New TTCs support 32bit mode. Older versions support
    only 16bit modes. Keep 16bit mode as default
    and 32bit optional.

    Signed-off-by: Michal Simek
    Signed-off-by: Daniel Lezcano

    Michal Simek
     
  • The clock is not unprepared in case of the request IRQ fails.

    Also update to request_irq.

    Signed-off-by: Gaël PORTAY
    Acked-by: Daniel Lezcano
    Acked-by: Boris Brezillon
    Signed-off-by: Daniel Lezcano

    Gael Portay
     
  • Currently we wait until both cp15 and mem timers are probed if we
    have both timer device nodes present in the device tree without
    checking if the device is actually available. If one of the timer
    device node present is disabled, the system locks up on the boot
    as no timer gets registered.

    This patch adds the check for the availability of the timer device
    so that unavailable timers are discarded correctly. It also adds
    the missing of_node_put.

    Signed-off-by: Sudeep Holla
    Reviewed-by: Stephen Boyd
    Acked-by: Mark Rutland
    Signed-off-by: Daniel Lezcano

    Sudeep Holla
     
  • In order to avoid waking up the system in a low power mode, the
    clocksource should not generate interrupts anymore. Disable the PIT
    timer interrupt when changing into the CLOCK_EVT_MODE_SHUTDOWN mode.

    [dlezcano] : remove superfluous empty line

    Signed-off-by: Stefan Agner
    Signed-off-by: Daniel Lezcano
    Acked-by: Bill Pringlemeir

    Stefan Agner
     
  • Meson6 SoCs are equipped with 5 32-bit timers, called TIMER_A, TIMER_B,
    TIMER_C, TIMER_D and TIMER_E.

    The driver is providing clocksource support for the 32-bit counter using
    TIMER_E. Clockevents are also supported using TIMER_A.

    Acked-by: Arnd Bergmann
    Signed-off-by: Carlo Caione
    Signed-off-by: Daniel Lezcano
    Reviewed-by: Matthias Brugger

    Carlo Caione
     

15 Sep, 2014

1 commit

  • Now that we don't depend on anyting in the mach-at91 directory, we can just
    move the driver to where it belongs.

    Signed-off-by: Maxime Ripard
    Acked-by: Boris BREZILLON
    Acked-by: Alexandre Belloni
    Acked-by: Daniel Lezcano
    Signed-off-by: Nicolas Ferre

    Conflicts:
    arch/arm/mach-at91/Kconfig
    arch/arm/mach-at91/Makefile

    Maxime Ripard
     

08 Sep, 2014

2 commits

  • The clock is not unprepared in case of the request IRQ fails.

    Also update to request_irq.

    Signed-off-by: Gaël PORTAY
    Acked-by: Daniel Lezcano
    Acked-by: Boris Brezillon
    Signed-off-by: Nicolas Ferre

    Gaël PORTAY
     
  • Move resource retrieval from atmel_tc_alloc to tc_probe to avoid lately
    reporting resource related issues when a TC block user request a TC block.

    Moreover, resources retrieval are usually done in the probe function,
    thus moving them add some consistency with other drivers.

    Initialization is done once, ie not every time a tc block is requested.
    If it fails, the device is not appended to the list of tc blocks.

    Furhermore, the device id is retrieved at probe as well, avoiding parsing
    DT every time the user requests of tc block.

    Signed-off-by: Gaël PORTAY
    Acked-by: Thierry Reding
    Acked-by: Boris Brezillon
    Signed-off-by: Nicolas Ferre

    Gaël PORTAY
     

27 Aug, 2014

3 commits


09 Aug, 2014

1 commit

  • Pull ARM SoC platform changes from Olof Johansson:
    "This is the bulk of new SoC enablement and other platform changes for
    3.17:

    - Samsung S5PV210 has been converted to DT and multiplatform
    - Clock drivers and bindings for some of the lower-end i.MX 1/2
    platforms
    - Kirkwood, one of the popular Marvell platforms, is folded into the
    mvebu platform code, removing mach-kirkwood
    - Hwmod data for TI AM43xx and DRA7 platforms
    - More additions of Renesas shmobile platform support
    - Removal of plat-samsung contents that can be removed with S5PV210
    being multiplatform/DT-enabled and the other two old platforms
    being removed

    New platforms (most with only basic support right now):

    - Hisilicon X5HD2 settop box chipset is introduced
    - Mediatek MT6589 (mobile chipset) is introduced
    - Broadcom BCM7xxx settop box chipset is introduced

    + as usual a lot other pieces all over the platform code"

    * tag 'soc-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (240 commits)
    ARM: hisi: remove smp from machine descriptor
    power: reset: move hisilicon reboot code
    ARM: dts: Add hix5hd2-dkb dts file.
    ARM: debug: Rename Hi3716 to HIX5HD2
    ARM: hisi: enable hix5hd2 SoC
    ARM: hisi: add ARCH_HISI
    MAINTAINERS: add entry for Broadcom ARM STB architecture
    ARM: brcmstb: select GISB arbiter and interrupt drivers
    ARM: brcmstb: add infrastructure for ARM-based Broadcom STB SoCs
    ARM: configs: enable SMP in bcm_defconfig
    ARM: add SMP support for Broadcom mobile SoCs
    Documentation: arm: misc updates to Marvell EBU SoC status
    Documentation: arm: add URLs to public datasheets for the Marvell Armada XP SoC
    ARM: mvebu: fix build without platforms selected
    ARM: mvebu: add cpuidle support for Armada 38x
    ARM: mvebu: add cpuidle support for Armada 370
    cpuidle: mvebu: add Armada 38x support
    cpuidle: mvebu: add Armada 370 support
    cpuidle: mvebu: rename the driver from armada-370-xp to mvebu-v7
    ARM: mvebu: export the SCU address
    ...

    Linus Torvalds
     

06 Aug, 2014

2 commits

  • Pull timer and time updates from Thomas Gleixner:
    "A rather large update of timers, timekeeping & co

    - Core timekeeping code is year-2038 safe now for 32bit machines.
    Now we just need to fix all in kernel users and the gazillion of
    user space interfaces which rely on timespec/timeval :)

    - Better cache layout for the timekeeping internal data structures.

    - Proper nanosecond based interfaces for in kernel users.

    - Tree wide cleanup of code which wants nanoseconds but does hoops
    and loops to convert back and forth from timespecs. Some of it
    definitely belongs into the ugly code museum.

    - Consolidation of the timekeeping interface zoo.

    - A fast NMI safe accessor to clock monotonic for tracing. This is a
    long standing request to support correlated user/kernel space
    traces. With proper NTP frequency correction it's also suitable
    for correlation of traces accross separate machines.

    - Checkpoint/restart support for timerfd.

    - A few NOHZ[_FULL] improvements in the [hr]timer code.

    - Code move from kernel to kernel/time of all time* related code.

    - New clocksource/event drivers from the ARM universe. I'm really
    impressed that despite an architected timer in the newer chips SoC
    manufacturers insist on inventing new and differently broken SoC
    specific timers.

    [ Ed. "Impressed"? I don't think that word means what you think it means ]

    - Another round of code move from arch to drivers. Looks like most
    of the legacy mess in ARM regarding timers is sorted out except for
    a few obnoxious strongholds.

    - The usual updates and fixlets all over the place"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (114 commits)
    timekeeping: Fixup typo in update_vsyscall_old definition
    clocksource: document some basic timekeeping concepts
    timekeeping: Use cached ntp_tick_length when accumulating error
    timekeeping: Rework frequency adjustments to work better w/ nohz
    timekeeping: Minor fixup for timespec64->timespec assignment
    ftrace: Provide trace clocks monotonic
    timekeeping: Provide fast and NMI safe access to CLOCK_MONOTONIC
    seqcount: Add raw_write_seqcount_latch()
    seqcount: Provide raw_read_seqcount()
    timekeeping: Use tk_read_base as argument for timekeeping_get_ns()
    timekeeping: Create struct tk_read_base and use it in struct timekeeper
    timekeeping: Restructure the timekeeper some more
    clocksource: Get rid of cycle_last
    clocksource: Move cycle_last validation to core code
    clocksource: Make delta calculation a function
    wireless: ath9k: Get rid of timespec conversions
    drm: vmwgfx: Use nsec based interfaces
    drm: i915: Use nsec based interfaces
    timekeeping: Provide ktime_get_raw()
    hangcheck-timer: Use ktime_get_ns()
    ...

    Linus Torvalds
     
  • Pull ARM updates from Russell King:
    "Included in this update:

    - perf updates from Will Deacon:

    The main changes are callchain stability fixes from Jean Pihet and
    event mapping and PMU name rework from Mark Rutland

    The latter is preparatory work for enabling some code re-use with
    arm64 in the future.

    - updates for nommu from Uwe Kleine-König:

    Two different fixes for the same problem making some ARM nommu
    configurations not boot since 3.6-rc1. The problem is that
    user_addr_max returned the biggest available RAM address which
    makes some copy_from_user variants fail to read from XIP memory.

    - deprecate legacy OMAP DMA API, in preparation for it's removal.

    The popular drivers have been converted over, leaving a very small
    number of rarely used drivers, which hopefully can be converted
    during the next cycle with a bit more visibility (and hopefully
    people popping out of the woodwork to help test)

    - more tweaks for BE systems, particularly with the kernel image
    format. In connection with this, I've cleaned up the way we
    generate the linker script for the decompressor.

    - removal of hard-coded assumptions of the kernel stack size, making
    everywhere depend on the value of THREAD_SIZE_ORDER.

    - MCPM updates from Nicolas Pitre.

    - Make it easier for proper CPU part number checks (which should
    always include the vendor field).

    - Assembly code optimisation - use the "bx" instruction when
    returning from a function on ARMv6+ rather than "mov pc, reg".

    - Save the last kernel misaligned fault location and report it via
    the procfs alignment file.

    - Clean up the way we create the initial stack frame, which is a
    repeated pattern in several different locations.

    - Support for 8-byte get_user(), needed for some DRM implementations.

    - mcs locking from Will Deacon.

    - Save and restore a few more Cortex-A9 registers (for errata
    workarounds)

    - Fix various aspects of the SWP emulation, and the ELF hwcap for the
    SWP instruction.

    - Update LPAE logic for pte_write and pmd_write to make it more
    correct.

    - Support for Broadcom Brahma15 CPU cores.

    - ARM assembly crypto updates from Ard Biesheuvel"

    * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (53 commits)
    ARM: add comments to the early page table remap code
    ARM: 8122/1: smp_scu: enable SCU standby support
    ARM: 8121/1: smp_scu: use macro for SCU enable bit
    ARM: 8120/1: crypto: sha512: add ARM NEON implementation
    ARM: 8119/1: crypto: sha1: add ARM NEON implementation
    ARM: 8118/1: crypto: sha1/make use of common SHA-1 structures
    ARM: 8113/1: remove remaining definitions of PLAT_PHYS_OFFSET from
    ARM: 8111/1: Enable erratum 798181 for Broadcom Brahma-B15
    ARM: 8110/1: do CPU-specific init for Broadcom Brahma15 cores
    ARM: 8109/1: mm: Modify pte_write and pmd_write logic for LPAE
    ARM: 8108/1: mm: Introduce {pte,pmd}_isset and {pte,pmd}_isclear
    ARM: hwcap: disable HWCAP_SWP if the CPU advertises it has exclusives
    ARM: SWP emulation: only initialise on ARMv7 CPUs
    ARM: SWP emulation: always enable when SMP is enabled
    ARM: 8103/1: save/restore Cortex-A9 CP15 registers on suspend/resume
    ARM: 8098/1: mcs lock: implement wfe-based polling for MCS locking
    ARM: 8091/2: add get_user() support for 8 byte types
    ARM: 8097/1: unistd.h: relocate comments back to place
    ARM: 8096/1: Describe required sort order for textofs-y (TEXT_OFFSET)
    ARM: 8090/1: add revision info for PL310 errata 588369 and 727915
    ...

    Linus Torvalds
     

23 Jul, 2014

10 commits

  • The MCT has a nice 64-bit counter. That means that we _can_ register
    as a 64-bit clocksource and sched_clock. ...but that doesn't mean we
    should.

    The 64-bit counter is read by reading two 32-bit registers. That
    means reading needs to be something like:
    - Read upper half
    - Read lower half
    - Read upper half and confirm that it hasn't changed.

    That wouldn't be terrible, but:
    - THe MCT isn't very fast to access (hundreds of nanoseconds).
    - The clocksource is queried _all the time_.

    In total system profiles of real workloads on ChromeOS, we've seen
    exynos_frc_read() taking 2% or more of CPU time even after optimizing
    the 3 reads above to 2 (see below).

    The MCT is clocked at ~24MHz on all known systems. That means that
    the 32-bit half of the counter rolls over every ~178 seconds. This
    inspired an optimization in ChromeOS to cache the upper half between
    calls, moving 3 reads to 2. ...but we can do better! Having a 32-bit
    timer that flips every 178 seconds is more than sufficient for Linux.
    Let's just use the lower half of the MCT.

    Times on 5420 to do 1000000 gettimeofday() calls from userspace:
    * Original code: 1323852 us
    * ChromeOS cache upper half: 1173084 us
    * ChromeOS + ldmia to optimize: 1045674 us
    * Use lower 32-bit only (this code): 1014429 us

    As you can see, the time used doesn't increase linearly with the
    number of reads and we can make 64-bit work almost as fast as 32-bit
    with a bit of assembly code. But since there's no real gain for
    64-bit, let's go with the simplest and fastest implementation.

    Note: with this change roughly half the time for gettimeofday() is
    spent in exynos_frc_read(). The rest is timer / system call overhead.

    Also note: this patch disables the use of the MCT on ARM64 systems
    until we've sorted out how to make "cycles_t" always 32-bit. Really
    ARM64 systems should be using arch timers anyway.

    Signed-off-by: Doug Anderson
    Acked-by Vincent Guittot
    Signed-off-by: Kukjin Kim
    Signed-off-by: Daniel Lezcano

    Doug Anderson
     
  • Using the __raw functions is discouraged. Update the file to
    consistently use the proper functions.

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim
    Signed-off-by: Daniel Lezcano

    Doug Anderson
     
  • Add device-tree support to PXA platforms.
    The driver still needs to maintain backward non device-tree
    compatibility as well, which implies :
    - a non device-tree init function
    - a static registers base address in the driver

    Signed-off-by: Robert Jarzmik
    Signed-off-by: Daniel Lezcano

    Robert Jarzmik
     
  • Move time.c from arch/arm/mach-pxa/time.c to
    drivers/clocksource/pxa_timer.c.

    Signed-off-by: Robert Jarzmik
    Signed-off-by: Daniel Lezcano

    Robert Jarzmik
     
  • This adds the clocksource driver for Cirrus Logic CLPS711X series SoCs.
    Designed primarily for migration CLPS711X subarch for multiplatform & DT,
    for this as the "OF" and "non-OF" calls implemented.

    Signed-off-by: Alexander Shiyan
    Acked-by: Arnd Bergmann
    Signed-off-by: Daniel Lezcano

    Alexander Shiyan
     
  • In the clocksource driver, we didn't explicitly enable the clock. it makes the
    clk reference counter wrong. We didn't encounter any hang issue because the
    tick's clock input has been open and is shared by some other hardware
    components, but if we don't enable those components in kernel, in the stage of
    disabling unused clk in kernel boot, Linux tick hangs.

    This patch fixes it. it does an explicit prepare and enable to the clock input,
    and increases the usage counter of the clk.

    Signed-off-by: Zhiwu Song
    Signed-off-by: Barry Song
    Signed-off-by: Daniel Lezcano

    Zhiwu Song
     
  • In 'em_sti.c', it will call devm_ioremap_resource() which need
    HAS_IOMEM. So need let EM_TIMER_STI depend on HAS_IOMEM, too.

    The related error (with allmodconfig under score):

    LD init/built-in.o
    em_sti.c:(.text.em_sti_probe+0x84): undefined reference to `devm_ioremap_resource'
    make: *** [vmlinux] Error 1

    Signed-off-by: Chen Gang
    Signed-off-by: Daniel Lezcano

    Chen Gang
     
  • This patch adds a clock source and clock event for the timer found
    on the Mediatek SoCs.

    The Mediatek General Purpose Timer block provides five 32 bit timers and
    one 64 bit timer.

    Two 32 bit timers are used by this driver:
    TIMER1: clock events supporting periodic and oneshot events
    TIMER2: clock source configured as a free running counter

    The General Purpose Timer block can be run with two clocks. A 13 MHz system
    clock and the RTC clock running at 32 KHz. This implementation uses the system
    clock with no clock source divider.

    The interrupts are shared between the different timers and have to be read back
    from a register. We just enable one interrupt for the clock event. The clock
    event timer is used by all cores.

    Signed-off-by: Matthias Brugger
    Acked-by: Thomas Gleixner
    Signed-off-by: Daniel Lezcano

    Matthias Brugger
     
  • It should be "MTU2" instead of "TMU2"

    Signed-off-by: Kuninori Morimoto
    Acked-by: Wolfram Sang
    Acked-by: Simon Horman
    Signed-off-by: Daniel Lezcano

    Kuninori Morimoto
     
  • Daniel Lezcano
     

20 Jul, 2014

1 commit

  • …e/linux-samsung into next/soc

    Merge "Samsung exynos cpuidle update for v3.17" from Kukjin Kim:

    - add callbacks exynos_suspend() and exynos_powered_up()
    for support cpuidle through mcpm
    - skip exynos_cpuidle for exynos5420 because is uses
    cpuidle-big-liggle generic cpuidle driver
    - add generic functions to calculate cpu number is used
    for pmu and this is required for exynos5420 multi-cluster
    - add of_device_id structure for big.LITTLE cpuidle and
    add "samsung,exynos5420" compatible string for exynos5420

    * tag 'exynos-cpuidle' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
    ARM: EXYNOS: populate suspend and powered_up callbacks for mcpm
    ARM: EXYNOS: do not allow cpuidle registration for exynos5420
    cpuidle: big.LITTLE: init driver for exynos5420
    cpuidle: big.LITTLE: Add ARCH_EXYNOS entry in config
    ARM: EXYNOS: add generic function to calculate cpu number
    cpuidle: big.LITTLE: add of_device_id structure
    + Linux 3.16-rc5

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

    Olof Johansson
     

18 Jul, 2014

1 commit

  • Ensure that platform maintainers check the CPU part number in the right
    manner: the CPU part number is meaningless without also checking the
    CPU implement(e|o)r (choose your preferred spelling!) Provide an
    interface which returns both the implementer and part number together,
    and update the definitions to include the implementer.

    Mark the old function as being deprecated... indeed, using the old
    function with the definitions will now always evaluate as false, so
    people must update their un-merged code to the new function. While
    this could be avoided by adding new definitions, we'd also have to
    create new names for them which would be awkward.

    Acked-by: Nicolas Pitre
    Signed-off-by: Russell King

    Russell King
     

17 Jul, 2014

1 commit


07 Jul, 2014

1 commit

  • …nel/git/tegra/linux into next/soc

    Merge "ARM: tegra: use us counter as delay timer" from Stephen Warren:

    Tegra has a micro-second counter whose rate doesn't vary with cpufreq
    changes. Register it so it can be used as the delay timer, so delays
    aren't influenced by cpufreq.

    * tag 'tegra-for-3.17-delay-timer' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
    clocksource: tegra: Use us counter as delay timer
    ARM: choose highest resolution delay timer
    kernel: add calibration_delay_done()

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

    Olof Johansson
     

05 Jul, 2014

2 commits

  • This patch registers the exynos mct clocksource as the current timer
    as it has constant clock rate. This will generate correct udelay for
    the exynos platform and avoid using unnecessary calibrated
    jiffies. This change has been tested on exynos5420 based board and
    udelay is very close to expected.

    Without this patch udelay() on exynos5400 / exynos5800 is wildly
    inaccurate due to big.LITTLE not adjusting loops_per_jiffy correctly.
    Also without this patch udelay() on exynos5250 can be innacruate
    during transitions between frequencies < 800 MHz (you'll go 200 MHz ->
    800 MHz -> 300 MHz and will run at 800 MHz for a time with the wrong
    loops_per_jiffy).

    [dianders: reworked and created version 3]

    Signed-off-by: Amit Daniel Kachhap
    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Amit Daniel Kachhap
     
  • In (93bfb76 clocksource: exynos_mct: register sched_clock callback) we
    supported using the MCT as a scheduler clock. We properly marked
    exynos4_read_sched_clock() as notrace. However, we then went and
    called another function that _wasn't_ notrace. That means if you do:

    cd /sys/kernel/debug/tracing/
    echo function_graph > current_tracer

    You'll get a crash.

    Fix this (but still let other readers of the MCT be trace-enabled) by
    adding an extra function. It's important to keep other users of MCT
    traceable because the MCT is actually quite slow to access and we want
    exynos4_frc_read() to show up in ftrace profiles if it's the
    bottleneck.

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Doug Anderson