07 May, 2013

1 commit

  • This series from Tomasz Figa restores support for the pwm clocksource
    in Exynos, which was broken during the conversion of the platform
    to the common clk framework. The clocksource is only used in one
    board in the mainline kernel (universal_c210), and this makes it
    work for DT based probing as well as restoring the non-DT based
    case.

    * exynos/pwm-clocksource:
    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

    Conflicts:
    arch/arm/boot/dts/Makefile
    arch/arm/mach-exynos/common.c
    drivers/clocksource/Kconfig
    drivers/clocksource/Makefile

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

30 Apr, 2013

1 commit


29 Apr, 2013

12 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
     

20 Apr, 2013

12 commits

  • This series contains the final pieces for Exynos multiplatform support:
    Most of the patches are about the exynos-combiner irqchip, which is
    converted to not rely on platform provided constants.

    * samsung/exynos-multiplatform-drivers:
    ARM: exynos: restore mach/regs-clock.h for exynos5
    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
    clocksource: exynos_mct: remove platform header dependency
    clk: exynos: prepare for multiplatform

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Multiple parts of next/drivers are prerequisites for the final
    exynos multiplatform changes, so let's pull in the entire branch.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Commit 6e6aac75 "ARM: EXYNOS: Migrate clock support to common
    clock framework" from Thomas Abraham removed the Exynos5 specific
    register definitions as they were unused at the time, but the
    cpufreq driver actually still uses them.

    Cc: Sylwester Nawrocki
    Cc: Tomasz Figa
    Cc: Thomas Abraham
    Cc: Kukjin Kim
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Since we want to move to using the linear IRQ domain in the
    future, we cannot rely on the irq numbers to be contiguous
    and need to look up the irq from the hwirq using the domain.

    This also turns the bogus comparison with NR_IRQ into a
    more meaningful check to see if the number has a valid mapping.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The platform code knows the IRQ base, while the irqchip driver
    should really not. This is a littly hacky because we still
    hardwire the IRQ base to 160 for the combiner in the DT case,
    when we should really use -1. Removing that line will cause
    a linear IRQ domain to be use, as we should.

    Signed-off-by: Arnd Bergmann
    Cc: Thomas Gleixner

    Arnd Bergmann
     
  • The IRQ_SPI() macro is not available in the driver when building with sparse
    IRQs or multiplatform, so let's move all users of this into one function
    that we can leave out when building DT-only.

    Signed-off-by: Arnd Bergmann
    Cc: Thomas Gleixner

    Arnd Bergmann
     
  • The number of combiners on a given SoC is a platform specific
    constant, and we cannot encode this number on a multiplatform
    kernel since the header file defining it is not available.

    Allocating the structure dynamically ends up cleaner anyway
    since we keep all the data local.

    Signed-off-by: Arnd Bergmann
    Cc: Thomas Gleixner

    Arnd Bergmann
     
  • We can find out the number of combined IRQs from the device
    tree, but in case of ATAGS boot, the driver currently uses
    hardcoded values based on the SoC type. We can't do that
    in general for a multiplatform kernel, so let's instead pass
    this information from platform code directly in case of
    ATAGS boot.

    Signed-off-by: Arnd Bergmann
    Cc: Thomas Gleixner

    Arnd Bergmann
     
  • The exynos combiner irqchip needs to find the parent interrupts
    and needs to know their number, so add the missing properties
    for exynos4 as they were already present for exynos5.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • For the non-DT case, the mct_init() function requires access
    to a couple of platform specific constants, but cannot include
    the header files in case we are building for multiplatform.

    This changes the interface to the platform so we pass all
    the necessary data as arguments to mct_init.

    Signed-off-by: Arnd Bergmann
    Cc: Thomas Gleixner
    Cc: John Stultz

    Arnd Bergmann
     
  • The new common clock drivers for exynos are using compile
    time constants and soc_is_exynos* macros to provide backwards
    compatibility for pre-DT systems, which is not possible with
    multiplatform kernels. This moves all the necessary
    information back into platform code and removes the mach/*
    header inclusions.

    Signed-off-by: Arnd Bergmann
    Cc: Mike Turquette

    Arnd Bergmann
     
  • There is currently no alternative implementation for of_irq_count
    when the function is not defined, and the declaration is hidden,
    so this works around calling an undeclared function. It should
    really not be needed.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

19 Apr, 2013

11 commits

  • pinctrl_register() returns NULL on error.

    Signed-off-by: Axel Lin
    Acked-by: Tony Prisk
    Acked-by: Linus Walleij
    Signed-off-by: Olof Johansson

    Axel Lin
     
  • Merging this into the next/drivers branch avoids a number of
    pointless conflicts with code changed here.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • This makes it possible to enable the exynos platform as part of a
    multiplatform kernel, in addition to keeping the single-platform
    exynos support.

    The multiplatform variant has a number of limitations at the moment:

    * It only supports DT-enabled machines. This is not a problem in
    the long run, as non-DT machines for exynos are going away.
    The main problem here is that the gpio code and the exynos_eint
    irqchip are not multiplatform capable but still required for
    ATAGS based boot.
    * The watchdog driver is still missing a conversion.
    * sparsemem and memory_holes are currently not supported in
    multiplatform.

    The the multiplatform aware ARCH_EXYNOS Kconfig symbol is disabled
    for now, as dependent patches are still pending in other
    subsystem trees. We will enable it once everything comes together.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Nothing outside of the rtc driver includes plat/regs-rtc.h,
    so we can simply move the file into the same directory,
    which allows us to build the file as platform-independent
    code.

    Signed-off-by: Arnd Bergmann
    Cc: rtc-linux@googlegroups.com
    Cc: Alessandro Zummo

    Arnd Bergmann
     
  • Nothing uses the NAND register definitions other than the
    actual driver, so we can move the header file into the
    same local directory, which lets us build it in a multiplatform
    configuration.

    Signed-off-by: Arnd Bergmann
    Acked-by: Kyungmin Park
    Cc: linux-mtd@lists.infradead.org
    Cc: David Woodhouse

    Arnd Bergmann
     
  • In multiplatform configurations, we cannot include headers
    provided by only the exynos platform. Fortunately a number
    of drivers that include those headers do not actually need
    them, so we can just remove the inclusions.

    Signed-off-by: Arnd Bergmann
    Acked-by: Eduardo Valentin
    Cc: Zhang Rui

    Arnd Bergmann
     
  • plat/regs-sdhci.h is not used anywhere but in the sdhci-s3c
    driver, so it can become a local file there and all other
    inclusions removed.

    plat/sdhci.h is used only to define the platform devices,
    and with the exception of the platform_data structure not
    needed by the driver, so we can split out the platform_data
    definition instead and leave the rest to platform code.

    Signed-off-by: Arnd Bergmann
    Acked-by: Chris Ball

    Arnd Bergmann
     
  • For a DT-only build we don't want to compile devs.c, but we do need
    the mfc device, which is also referenced by the DT based platforms,
    so move it all into one place.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The move is necessary to support early debug output on exynos
    with multiplatform configurations. This implies also moving the
    plat/debug-macro.S file, but we are leaving the remaining users of that
    file in place, to avoid adding large numbers of extra configuration
    options to Kconfig.debug

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • When we enable CONFIG_SPARSE_IRQ, we have to set the value of NR_IRQS in
    the machine_desc for legacy IRQ domains, and any file referring to the
    number of interrupts or a specific number must include the mach/irqs.h
    header file explicitly.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • As a preparation for multiplatform support, this introduces
    a new Kconfig symbol to split the ATAGS based EXYNOS platforms
    from the DT based ones. Turning off CONFIG_EXYNOS_ATAGS disables
    all platforms that are not yet converted to DT, and we can
    have code that relies on DT checking for this symbol being
    disabled.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

13 Apr, 2013

2 commits