06 Apr, 2018

1 commit

  • Pull ARM SoC platform updates from Arnd Bergmann:
    "This release brings up a new platform based on the old ARM9 core: the
    Nuvoton NPCM is used as a baseboard management controller, competing
    with the better known ASpeed AST2xx series.

    Another important change is the addition of ARMv7-A based chips in
    mach-stm32. The older parts in this platform are ARMv7-M based
    microcontrollers, now they are expanding to general-purpose workloads.

    The other changes are the usual defconfig updates to enable additional
    drivers, lesser bugfixes. The largest updates as often are the ongoing
    OMAP cleanups, but we also have a number of changes for the older PXA
    and davinci platforms this time.

    For the Renesas shmobile/r-car platform, some new infrastructure is
    needed to make the watchdog work correctly.

    Supporting Multiprocessing on Allwinner A80 required a significant
    amount of new code, but is not doing anything unexpected"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (179 commits)
    arm: npcm: modify configuration for the NPCM7xx BMC.
    MAINTAINERS: update entry for ARM/berlin
    ARM: omap2: fix am43xx build without L2X0
    ARM: davinci: da8xx: simplify CFGCHIP regmap_config
    ARM: davinci: da8xx: fix oops in USB PHY driver due to stack allocated platform_data
    ARM: multi_v7_defconfig: add NXP FlexCAN IP support
    ARM: multi_v7_defconfig: enable thermal driver for i.MX devices
    ARM: multi_v7_defconfig: add RN5T618 PMIC family support
    ARM: multi_v7_defconfig: add NXP graphics drivers
    ARM: multi_v7_defconfig: add GPMI NAND controller support
    ARM: multi_v7_defconfig: add OCOTP driver for NXP SoCs
    ARM: multi_v7_defconfig: configure I2C driver built-in
    arm64: defconfig: add CONFIG_UNIPHIER_THERMAL and CONFIG_SNI_AVE
    ARM: imx: fix imx6sll-only build
    ARM: imx: select ARM_CPU_SUSPEND for CPU_IDLE as well
    ARM: mxs_defconfig: Re-sync defconfig
    ARM: imx_v4_v5_defconfig: Use the generic fsl-asoc-card driver
    ARM: imx_v4_v5_defconfig: Re-sync defconfig
    arm64: defconfig: enable stmmac ethernet to defconfig
    ARM: EXYNOS: Simplify code in coupled CPU idle hot path
    ...

    Linus Torvalds
     

01 Mar, 2018

1 commit


23 Feb, 2018

3 commits


16 Nov, 2017

1 commit

  • Pull arm64 updates from Will Deacon:
    "The big highlight is support for the Scalable Vector Extension (SVE)
    which required extensive ABI work to ensure we don't break existing
    applications by blowing away their signal stack with the rather large
    new vector context ( of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (97 commits)
    arm64: Make ARMV8_DEPRECATED depend on SYSCTL
    arm64: Implement __lshrti3 library function
    arm64: support __int128 on gcc 5+
    arm64/sve: Add documentation
    arm64/sve: Detect SVE and activate runtime support
    arm64/sve: KVM: Hide SVE from CPU features exposed to guests
    arm64/sve: KVM: Treat guest SVE use as undefined instruction execution
    arm64/sve: KVM: Prevent guests from using SVE
    arm64/sve: Add sysctl to set the default vector length for new processes
    arm64/sve: Add prctl controls for userspace vector length management
    arm64/sve: ptrace and ELF coredump support
    arm64/sve: Preserve SVE registers around EFI runtime service calls
    arm64/sve: Preserve SVE registers around kernel-mode NEON use
    arm64/sve: Probe SVE capabilities and usable vector lengths
    arm64: cpufeature: Move sys_caps_initialised declarations
    arm64/sve: Backend logic for setting the vector length
    arm64/sve: Signal handling support
    arm64/sve: Support vector length resetting for new processes
    arm64/sve: Core task context handling
    arm64/sve: Low-level CPU setup
    ...

    Linus Torvalds
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

14 Oct, 2017

2 commits

  • The current delay implementation uses the yield instruction, which is a
    hint that it is beneficial to schedule another thread. As this is a hint,
    it may be implemented as a NOP, causing all delays to be busy loops. This
    is the case for many existing CPUs.

    Taking advantage of the generic timer sending periodic events to all
    cores, we can use WFE during delays to reduce power consumption. This is
    beneficial only for delays longer than the period of the timer event
    stream.

    If timer event stream is not enabled, delays will behave as yield/busy
    loops.

    Signed-off-by: Julien Thierry
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Mark Rutland
    Signed-off-by: Will Deacon

    Julien Thierry
     
  • The arch timer configuration for a CPU might get reset after suspending
    said CPU.

    In order to reliably use the event stream in the kernel (e.g. for delays),
    we keep track of the state where we can safely consider the event stream as
    properly configured. After writing to cntkctl, we issue an ISB to ensure
    that subsequent delay loops can rely on the event stream being enabled.

    Signed-off-by: Julien Thierry
    Acked-by: Mark Rutland
    Cc: Marc Zyngier
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Signed-off-by: Will Deacon

    Julien Thierry
     

19 Apr, 2017

1 commit

  • In preparation for ACPI GTDT support, this patch adds structs to
    describe the MMIO timers indepedent of the firmware interface.

    Subsequent patches will use these to split the FW/HW probing logic, so
    that the HW probing logic can be shared by ACPI and DT.

    Signed-off-by: Fu Wei
    Reviewed-by: Hanjun Guo
    Signed-off-by: Mark Rutland

    Fu Wei
     

10 Apr, 2017

2 commits


18 Oct, 2016

1 commit


28 Jun, 2016

1 commit

  • The init functions do not return any error. They behave as the following:

    - panic, thus leading to a kernel crash while another timer may work and
    make the system boot up correctly

    or

    - print an error and let the caller unaware if the state of the system

    Change that by converting the init functions to return an error conforming
    to the CLOCKSOURCE_OF_RET prototype.

    Proper error handling (rollback, errno value) will be changed later case
    by case, thus this change just return back an error or success in the init
    function.

    Signed-off-by: Daniel Lezcano

    Daniel Lezcano
     

03 May, 2016

3 commits


14 Dec, 2015

1 commit


02 Jun, 2015

1 commit

  • The ARM Dual-Timer SP804 module is peripheral found not only on ARM32
    platforms but also on ARM64 platforms.

    This patch moves the driver out of arch/arm to driver/clocksource
    so that it can be used on ARM64 platforms also.

    Cc: Daniel Lezcano
    Cc: Rob Herring
    Cc: Arnd Bergmann
    Cc: Catalin Marinas
    Cc: Olof Johansson
    Acked-by: Thomas Gleixner
    Signed-off-by: Sudeep Holla
    Signed-off-by: Russell King

    Sudeep Holla
     

31 Dec, 2014

1 commit


23 Jul, 2014

1 commit

  • As clocksource pxa_timer was moved to clocksource framework, the
    pxa_timer initialization needs to be a bit amended, to pass the
    necessary informations to clocksource, ie :
    - the timer interrupt (mach specific)
    - the timer registers base (ditto)
    - the timer clockrate

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

    Robert Jarzmik
     

26 Sep, 2013

2 commits

  • The ARM architected timer can generate events (used for waking up
    CPUs executing the wfe instruction) at a frequency represented as a
    power-of-2 divisor of the clock rate.

    An event stream might be used:
    - To implement wfe-based timeouts for userspace locking implementations.
    - To impose a timeout on a wfe for safeguarding against any programming
    error in case an expected event is not generated.

    This patch computes the event stream frequency aiming for a period
    of 100us between events. It uses ARM/ARM64 specific backends to configure
    and enable the event stream.

    Cc: Lorenzo Pieralisi
    Reviewed-by: Catalin Marinas
    Acked-by: Olof Johansson
    Signed-off-by: Will Deacon
    [sudeep: moving ARM/ARM64 changes into separate patches
    and adding Kconfig option]
    Signed-off-by: Sudeep KarkadaNagesha

    Will Deacon
     
  • Add macros to describe the bitfields in the ARM architected timer
    control register to make code easy to understand.

    Reviewed-by: Lorenzo Pieralisi
    Reviewed-by: Will Deacon
    Acked-by: Catalin Marinas
    Acked-by: Olof Johansson
    Signed-off-by: Sudeep KarkadaNagesha

    Sudeep KarkadaNagesha
     

07 Sep, 2013

1 commit

  • 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
     

13 Aug, 2013

1 commit

  • This patch introduces new Samsung PWM driver, which is completely
    rewritten to be multiplatform- and DeviceTree-aware.

    In addition, remaining problems of old driver are fixed, such as:
    - proper handling of hardware variants,
    - synchronization on SMP systems,
    - handling of boundary parameter values,
    - hardware sharing with PWM clocksource driver,
    - undefined state of PWM output after stopping PWM channel.

    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: Thierry Reding

    Tomasz Figa
     

01 Aug, 2013

2 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
     
  • 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
     

07 Jun, 2013

1 commit

  • Switching between reading the virtual or physical counters is
    problematic, as some core code wants a view of time before we're fully
    set up. Using a function pointer and switching the source after the
    first read can make time appear to go backwards, and having a check in
    the read function is an unfortunate block on what we want to be a fast
    path.

    Instead, this patch makes us always use the virtual counters. If we're a
    guest, or don't have hyp mode, we'll use the virtual timers, and as such
    don't care about CNTVOFF as long as it doesn't change in such a way as
    to make time appear to travel backwards. As the guest will use the
    virtual timers, a (potential) KVM host must use the physical timers
    (which can wake up the host even if they fire while a guest is
    executing), and hence a host must have CNTVOFF set to zero so as to have
    a consistent view of time between the physical timers and virtual
    counters.

    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas
    Acked-by: Marc Zyngier
    Acked-by: Santosh Shilimkar
    Cc: Rob Herring

    Mark Rutland
     

08 May, 2013

1 commit

  • Pull late ARM Exynos multiplatform changes from Arnd Bergmann:
    "These continue the multiplatform support for exynos, adding support
    for building most of the essential drivers (clocksource, clk, irqchip)
    when combined with other platforms. As a result, it should become
    really easy to add full multiplatform exynos support in 3.11, although
    we don't yet enable it for 3.10.

    The changes were not included in the earlier multiplatform series in
    order to avoid clashes with the other Exynos updates.

    This also includes work from Tomasz Figa to fix the pwm clocksource
    code on Exynos, which is not strictly required for multiplatform, but
    related to the other patches in this set and needed as a bug fix for
    at least one board."

    * tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
    ARM: dts: exynops4210: really add universal_c210 dts
    ARM: dts: exynos4210: Add basic dts file for universal_c210 board
    ARM: dts: exynos4: Add node for PWM device
    ARM: SAMSUNG: Do not register legacy timer interrupts on Exynos
    clocksource: samsung_pwm_timer: Work around rounding errors in clockevents core
    clocksource: samsung_pwm_timer: Correct programming of clock events
    clocksource: samsung_pwm_timer: Use proper clockevents max_delta
    clocksource: samsung_pwm_timer: Add support for non-DT platforms
    clocksource: samsung_pwm_timer: Drop unused samsung_pwm struct
    clocksource: samsung_pwm_timer: Keep all driver data in a structure
    clocksource: samsung_pwm_timer: Make PWM spinlock global
    clocksource: samsung_pwm_timer: Let platforms select the driver
    Documentation: Add device tree bindings for Samsung PWM timers
    clocksource: add samsung pwm timer driver
    irqchip: exynos: look up irq using irq_find_mapping
    irqchip: exynos: pass irq_base from platform
    irqchip: exynos: localize irq lookup for ATAGS
    irqchip: exynos: allocate combiner_data dynamically
    irqchip: exynos: pass max combiner number to combiner_init
    ARM: exynos: add missing properties for combiner IRQs
    ...

    Linus Torvalds
     

29 Apr, 2013

3 commits


21 Apr, 2013

1 commit

  • This adds a new clocksource driver for the PWM timer that is
    present in most Samsung SoCs, based on the existing driver in
    arch/arm/plat-samsung/samsung-time.c and many changes implemented by
    Tomasz Figa.

    Originally, the conversion of all Samsung machines to the new driver was
    planned for 3.10, but that work ended up being too late and too invasive
    just before the merge window.

    Unfortunately, other changes in the Exynos platform resulted in some
    Exynos4 setups, particularly the Universal C210 board to be broken. In
    order to fix that with minimum risk, so we now leave the existing pwm
    clocksource driver in place for all older platforms and use the new
    driver only for device tree enabled boards. This way, we can get the
    broken machines running again using DT descriptions.

    All clocksource changes were implemented by Tomasz, while the DT
    registration was rewritten by Arnd.

    Signed-off-by: Arnd Bergmann
    Cc: Tomasz Figa
    Cc: Kyungmin Park
    Cc: Kukjin Kim
    Cc: Ben Dooks
    Cc: John Stultz
    Cc: Thomas Gleixner

    Tomasz Figa
     

12 Apr, 2013

1 commit

  • This converts arm and arm64 to use CLKSRC_OF DT based initialization for
    the arch timer. A new function arch_timer_arch_init is added to allow for
    arch specific setup.

    This has a side effect of enabling sched_clock on omap5 and exynos5. There
    should not be any reason not to use the arch timers for sched_clock.

    Signed-off-by: Rob Herring
    Cc: Russell King
    Cc: Kukjin Kim
    Cc: Tony Lindgren
    Cc: Simon Horman
    Cc: Magnus Damm
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: John Stultz
    Cc: Thomas Gleixner
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: linux-omap@vger.kernel.org
    Cc: linux-sh@vger.kernel.org
    Acked-by: Santosh Shilimkar

    Rob Herring
     

04 Mar, 2013

1 commit

  • Pull new ImgTec Meta architecture from James Hogan:
    "This adds core architecture support for Imagination's Meta processor
    cores, followed by some later miscellaneous arch/metag cleanups and
    fixes which I kept separate to ease review:

    - Support for basic Meta 1 (ATP) and Meta 2 (HTP) core architecture
    - A few fixes all over, particularly for symbol prefixes
    - A few privilege protection fixes
    - Several cleanups (setup.c includes, split out a lot of
    metag_ksyms.c)
    - Fix some missing exports
    - Convert hugetlb to use vm_unmapped_area()
    - Copy device tree to non-init memory
    - Provide dma_get_sgtable()"

    * tag 'metag-v3.9-rc1-v4' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag: (61 commits)
    metag: Provide dma_get_sgtable()
    metag: prom.h: remove declaration of metag_dt_memblock_reserve()
    metag: copy devicetree to non-init memory
    metag: cleanup metag_ksyms.c includes
    metag: move mm/init.c exports out of metag_ksyms.c
    metag: move usercopy.c exports out of metag_ksyms.c
    metag: move setup.c exports out of metag_ksyms.c
    metag: move kick.c exports out of metag_ksyms.c
    metag: move traps.c exports out of metag_ksyms.c
    metag: move irq enable out of irqflags.h on SMP
    genksyms: fix metag symbol prefix on crc symbols
    metag: hugetlb: convert to vm_unmapped_area()
    metag: export clear_page and copy_page
    metag: export metag_code_cache_flush_all
    metag: protect more non-MMU memory regions
    metag: make TXPRIVEXT bits explicit
    metag: kernel/setup.c: sort includes
    perf: Enable building perf tools for Meta
    metag: add boot time LNKGET/LNKSET check
    metag: add __init to metag_cache_probe()
    ...

    Linus Torvalds
     

03 Mar, 2013

1 commit

  • Add time keeping code for metag. Meta hardware threads have 2 timers.
    The background timer (TXTIMER) is used as a free-running time base, and
    the interrupt timer (TXTIMERI) is used for the timer interrupt. Both
    counters traditionally count at approximately 1MHz.

    Signed-off-by: James Hogan
    Cc: John Stultz
    Cc: Thomas Gleixner

    James Hogan
     

12 Feb, 2013

1 commit


31 Jan, 2013

2 commits

  • The arch_timer driver supports a superset of the functionality of the
    arm_generic driver, and is not tied to a particular arch.

    This patch moves arm64 to use the arch_timer driver, gaining additional
    functionality in doing so, and removes the (now unused) arm_generic
    driver. Timer-related hooks specific to arm64 are moved into
    arch/arm64/kernel/time.c.

    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas
    Acked-by: Marc Zyngier
    Acked-by: Santosh Shilimkar

    Mark Rutland
     
  • The core functionality of the arch_timer driver is not directly tied to
    anything under arch/arm, and can be split out.

    This patch factors out the core of the arch_timer driver, so it can be
    shared with other architectures. A couple of functions are added so
    that architecture-specific code can interact with the driver without
    needing to touch its internals.

    The ARM_ARCH_TIMER config variable is moved out to
    drivers/clocksource/Kconfig, existing uses in arch/arm are replaced with
    HAVE_ARM_ARCH_TIMER, which selects it.

    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas
    Acked-by: Marc Zyngier

    Mark Rutland
     

17 Sep, 2012

1 commit

  • This patch adds support for the ARM generic timers with A64 instructions
    for accessing the timer registers. It uses the physical counter as the
    clock source and the virtual counter as sched_clock.

    The timer frequency can be specified via DT or read from the CNTFRQ_EL0
    register. The physical counter is also accessible from user space
    allowing fast gettimeofday() implementation.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas
    Acked-by: Tony Lindgren
    Acked-by: Nicolas Pitre
    Acked-by: Olof Johansson
    Acked-by: Santosh Shilimkar
    Acked-by: Arnd Bergmann

    Marc Zyngier