linux/drivers/pinctrl
Lee Jones ac652d7941 pinctrl/abx500: move IRQ handling to ab8500-core
In its current state the gpio-ab8500 driver looks after some GPIO
lines found on the AB8500 MFD chip. It also controls all of its
own IRQ handling for these GPIOs by inventing some virtual IRQs
and handing those out to sub-devices. There has been quite a bit
of controversy over this and it was a contributing factor to the
driver being marked as BROKEN in Mainline.

The reason for adopting this method was due to added complexity
in the hardware. Unusually, each GPIO has two separate IRQs
associated with it, one for a rising and a different one for a
falling interrupt. Using this method complicates matters further
because the GPIO IRQs are actually sandwiched between a bunch
of IRQs which are handled solely by the AB8500 core driver.

The best way for us to take this forward is to get rid of the
virtual IRQs and only hand out the rising IRQ lines. If a
sub-driver wishes to request a falling interrupt, they can do
so by requesting a rising line in the normal way. They just
have to add IRQ_TYPE_EDGE_FALLING or IRQ_TYPE_EDGE_BOTH, if
they require both in the flags. Then if a falling IRQ is
triggered, the AB8500 core driver will know how to handle the
added complexity accordingly. This should greatly simply things.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
[Augment to keep irq_base for a while (removed later)]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2013-02-10 15:14:13 +01:00
..
mvebu ARM: arm-soc fixes for 3.8-rc 2013-01-08 18:53:56 -08:00
spear Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
core.c pinctrl: core: Make pinctrl_release static 2013-01-30 11:00:58 +01:00
core.h drivers/pinctrl: grab default handles from device core 2013-01-23 16:39:51 +01:00
devicetree.c pinctrl: do not defer device tree hogs 2013-01-11 21:49:21 +01:00
devicetree.h pinctrl: core device tree mapping table parsing support 2012-04-18 13:53:10 +02:00
Kconfig Merge branch 'allwinner-sunxi' into devel 2013-02-08 14:26:49 +01:00
Makefile Merge branch 'allwinner-sunxi' into devel 2013-02-08 14:26:49 +01:00
pinconf-generic.c pinctrl: generic: add slew rate config parameter 2013-01-21 15:43:42 +01:00
pinconf.c pinctrl: remove mutex lock in groups show 2012-10-18 20:27:31 +02:00
pinconf.h pinctrl: pinconf: fix compilation error if PINCONF is not selected 2012-04-18 13:53:12 +02:00
pinctrl-ab8500.c pinctrl/abx500: align GPIO cluster boundaries 2013-02-06 22:38:40 +01:00
pinctrl-ab8505.c pinctrl/abx500: align GPIO cluster boundaries 2013-02-06 22:38:40 +01:00
pinctrl-ab8540.c pinctrl/abx500: align GPIO cluster boundaries 2013-02-06 22:38:40 +01:00
pinctrl-ab9540.c pinctrl/abx500: align GPIO cluster boundaries 2013-02-06 22:38:40 +01:00
pinctrl-abx500.c pinctrl/abx500: move IRQ handling to ab8500-core 2013-02-10 15:14:13 +01:00
pinctrl-abx500.h pinctrl/abx500: add AB8540 sub-driver 2013-02-05 13:54:21 +01:00
pinctrl-at91.c Driver core __dev* removal patches 2013-01-03 16:17:50 -08:00
pinctrl-bcm2835.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-coh901.c pinctrl/u300/coh901: stop spawning pinctrl from GPIO 2012-11-21 08:55:22 +01:00
pinctrl-coh901.h pinctrl: support pinconfig on the U300 2012-03-12 22:49:03 +01:00
pinctrl-exynos5440.c pinctrl: exynos5440: remove erroneous __init 2013-02-07 19:43:20 +01:00
pinctrl-exynos.c ARM: arm-soc: SoC updates for 3.8 2012-12-12 12:05:15 -08:00
pinctrl-exynos.h pinctrl: samsung: Use per-bank IRQ domain for wake-up interrupts 2012-10-15 09:10:12 +02:00
pinctrl-falcon.c pinctrl/lantiq: add functionality to falcon_pinconf_dbg_show 2013-02-05 16:17:25 +01:00
pinctrl-imx6q.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-imx23.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-imx28.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-imx35.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-imx51.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-imx53.c Driver core __dev* removal patches 2013-01-03 16:17:50 -08:00
pinctrl-imx.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-imx.h pinctrl: pinctrl-imx: add imx pinctrl core driver 2012-05-02 01:14:40 +02:00
pinctrl-lantiq.c pinctrl/lantiq: fix pin number in ltq_pmx_gpio_request_enable 2013-02-05 16:17:26 +01:00
pinctrl-lantiq.h pinctrl/lantiq: add output pinconf parameter 2013-02-05 16:17:22 +01:00
pinctrl-mmp2.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-mxs.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-mxs.h pinctrl: add pinctrl-mxs support 2012-05-02 01:18:27 +02:00
pinctrl-nomadik-db8500.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-nomadik-db8540.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-nomadik-stn8815.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-nomadik.c pinctrl: nomadik: Allow prcm_base to be extracted from Device Tree 2013-01-18 21:00:56 +01:00
pinctrl-nomadik.h pinctrl/nomadik: move the platform data header 2012-11-05 09:55:27 +01:00
pinctrl-pxa3xx.c pinctrl: pxa3xx: Remove phy_base and phy_size from struct pxa3xx_pinmux_info 2012-11-15 11:21:46 +01:00
pinctrl-pxa3xx.h pinctrl: pxa3xx: Remove phy_base and phy_size from struct pxa3xx_pinmux_info 2012-11-15 11:21:46 +01:00
pinctrl-pxa168.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-pxa910.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-samsung.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-samsung.h pinctrl: samsung: Fix a typo in pinctrl-samsung.h 2012-12-18 19:00:25 -08:00
pinctrl-single.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-sirf.c Driver core __dev* removal patches 2013-01-03 16:17:50 -08:00
pinctrl-sunxi.c pinctrl: sunxi: add of_xlate function 2013-02-05 17:32:29 +01:00
pinctrl-sunxi.h ARM: pinctrl: sunxi: Add the pinctrl pin set for Allwinner A10 2013-02-01 10:45:34 +01:00
pinctrl-tegra20.c pinctrl: tegra: add support for rcv-sel and drive type 2013-01-18 16:13:52 +01:00
pinctrl-tegra30.c pinctrl: tegra: add support for rcv-sel and drive type 2013-01-18 16:13:52 +01:00
pinctrl-tegra114.c pinctrl: tegra114: add pinctrl driver for NVIDIA's Tegra114 SoC 2013-01-18 16:14:54 +01:00
pinctrl-tegra.c pinctrl: tegra: add support for rcv-sel and drive type 2013-01-18 16:13:52 +01:00
pinctrl-tegra.h pinctrl: tegra: add support for rcv-sel and drive type 2013-01-18 16:13:52 +01:00
pinctrl-u300.c Drivers: pinctrl: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
pinctrl-xway.c pinctrl/lantiq: the pinconf OD parameter argument was ignored 2013-02-05 16:17:23 +01:00
pinmux.c pinctrl: pinmux: Release all taken pins in pinmux_enable_setting error paths 2012-11-11 20:18:32 +01:00
pinmux.h pinctrl: ifdef CONFIG_DEBUG_FS cleanup 2012-04-18 13:53:12 +02:00