]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: gic: allow GIC to support non-banked setups
authorMarc Zyngier <marc.zyngier@arm.com>
Sat, 12 Nov 2011 16:09:49 +0000 (16:09 +0000)
committerMarc Zyngier <marc.zyngier@arm.com>
Tue, 15 Nov 2011 18:13:03 +0000 (18:13 +0000)
commita8e8ec9a28782fb8384eac0ccc1a2e33ec78879a
treee2d84ee2c816d4bef066806863a3937792a08581
parent41b1a2b1efa8a1529300e2e682a04c37411900c5
ARM: gic: allow GIC to support non-banked setups

The GIC support code is heavily using the fact that hardware
implementations are exposing banked registers. Unfortunately, it
looks like at least one GIC implementation (EXYNOS) offers both
the distributor and the CPU interfaces at different addresses,
depending on the CPU.

This problem is solved by allowing the distributor and CPU interface
addresses to be per-cpu variables for the platforms that require it.
The EXYNOS code is updated not to mess with the GIC internals while
handling interrupts, and struct gic_chip_data is back to being private.
The DT binding for the gic is updated to allow an optional "cpu-offset"
value, which is used to compute the various base addresses.

Finally, a new config option (GIC_NON_BANKED) is used to control this
feature, so the overhead is only present on kernels compiled with
support for EXYNOS.

Tested on Origen (EXYNOS4) and Panda (OMAP4).

Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Documentation/devicetree/bindings/arm/gic.txt
arch/arm/common/Kconfig
arch/arm/common/gic.c
arch/arm/include/asm/hardware/gic.h
arch/arm/mach-exynos/cpu.c
arch/arm/mach-exynos/platsmp.c
arch/arm/plat-s5p/Kconfig