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 driverConflicts:
arch/arm/boot/dts/Makefile
arch/arm/mach-exynos/common.c
drivers/clocksource/Kconfig
drivers/clocksource/MakefileSigned-off-by: Arnd Bergmann
30 Apr, 2013
1 commit
-
I fumbled when resolving a merge conflict on application of commit
765d012c2389 (ARM: dts: exynos4210: Add basic dts file for universal_c210
board), and left out the dts source file. Here it is.Signed-off-by: Olof Johansson
29 Apr, 2013
12 commits
-
This patch adds basic device tree sources for Universal C210 board.
Currently support includes:
- eMMC
- serial
- max8952 and max8998 voltage regulators.
- gpio-keysMore support will be added in further patches.
Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch adds device tree node for PWM block present on Exynos 4 SoCs.
Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch removes legacy PWM timer interrupt initialization from
exynos{4,5}_init_irq() functions, since it conflicts with internal
interrupt handling of the new PWM clocksource driver.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
Due to rounding errors in clockevents core (in conversions between ticks
and nsecs), it might happen that the set_next_event callback gets called
with cycles = 0, causing the code to incorrectly program the PWM timer.This patch modifies the callback to program the timer for 1 tick, if
received tick count value is 0.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
In current code, the tick count value programmed to the hardware is
always decremented by one. This is reasonable for periodic mode, since
there is one extra tick between 0 and COUNT (after reloading), but it
makes oneshot events happen 1 tick earlier than requested, because the
interrupt is triggered on transition from 1 to 0.This patch removes the decrementation from PWM channel setup code and
moves it instead to periodic timer setup, to make both periodic and
oneshot modes work correctly.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch replaces hardcoded -1 argument passed to
clockevents_config_and_register() with tcnt_max calculated based on
variant data.This fixes invalid max delta configuration for 16-bit timers of s3c24xx.
Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch extends the driver to support platforms that still use legacy
ATAGS-based boot, without device tree, by providing an exported function
that can be used from platform code to initialize the clocksource.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch removes the unused samsung_pwm struct from public header.
Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch modifies the driver to keep all its private data consistently
in a single struct, instead of keeping part as separate variables.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch makes the PWM spinlock global and exports it to allow using
it in Samsung PWM driver (will be reworked to use proper synchronization
in further patches).Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch modifies the way of enabling the driver to let the platforms
select it in their Kconfig instead of specifying particular platforms in
Kconfig entry of the driver.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson -
This patch adds missing documentation describing Device Tree bindings
for Samsung PWM timers.Signed-off-by: Tomasz Figa
Signed-off-by: Kyungmin Park
Reviewed-by: Arnd Bergmann
Acked-by: Kukjin Kim
Signed-off-by: Olof Johansson
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
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 multiplatformSigned-off-by: 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
-
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 -
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
-
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 -
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 -
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 -
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 -
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
-
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 -
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 -
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
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 -
Merging this into the next/drivers branch avoids a number of
pointless conflicts with code changed here.Signed-off-by: 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
-
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 -
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 -
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 -
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 -
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
-
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.debugSigned-off-by: 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
-
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
13 Apr, 2013
2 commits
-
From Philipp Zabel, this is a series that adds a simple API for devices
to request being reset by a separate reset controller hardware, and
it implements reset signal device tree bindings.* 'reset/for_v3.10' of git://git.pengutronix.de/git/pza/linux:
reset: NULL deref on allocation failure
reset: Add reset controller API
dt: describe base reset signal bindingSigned-off-by: Olof Johansson
-
This patch moves the arch-vt8500 irq code to drivers/irqchip and converts
it to use the new IRQCHIP_DECLARE and irqchip_init. This allows the removal
of some more functions from common.hSigned-off-by: Tony Prisk
Signed-off-by: Olof Johansson