linux/arch/arm
Stephen Warren 4b91b6fb86 arm/tegra: Don't create duplicate gpio and pinmux devices
*_pinmux_init() register the GPIO and pinmux devices so that they're ready
before any other device needs them.

*_pinmux_init() are also called by board-dt.c in order to set up the GPIO
and pinmux configurations. In this case, if we register the devices, they
end up being probed once due to this registration, and a second time due
to a device-tree node (or vice-versa). The second probe fails since the
memory regions are already requested. Besides, we don't actually want the
duplicated devices.

To avoid this duplicate registration, modify *_pinmux_init() to check
whether it's running on a DT machine. If not, register the pinmux devices.
If so, don't register them.

Finally, modify board-dt.c to call the *_pinmux_init() after all devices have
been instantiated from device-tree. This allows the GPIO and pinmux devices
to be instantiated and initialized before calling functions to configure the
hardware.

This has one disadvantage: The pinmux and GPIO initialization now happens
after /all/ devices are instantiated, rather than after just gpio and
pinmux but before anything else. So the correct HW configuration is not
in place when e.g. the SD/MMC device is probed. Long-term, this should be
solved by doing both:

a) Initializing the HW state from DT nodes during GPIO and pinmux device
   probe.
b) Using the deferred driver probe mechanism, so that drivers can defer
   their probe until after the gpio and pinmux drivers have probed.

v2: s/int is_dt/bool is_dt/
v3: Use of_machine_is_compatible inside *_pinmux_init() rather than passing
an explicit parameter into the function from outside.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
2011-11-09 10:38:56 -08:00
..
boot Merge branch 'next/soc' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 21:08:03 -07:00
common Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
configs ARM: EXYNOS: Add ARCH_EXYNOS and reorganize arch/arm/mach-exynos 2011-11-06 13:54:56 +09:00
include/asm Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2011-11-04 18:02:25 -07:00
kernel Merge branch 'highbank/soc' into next/soc 2011-11-02 02:46:10 +01:00
lib
mach-at91 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
mach-bcmring arm: fix implicit use of sched.h in bcmring/dma.c 2011-10-31 19:30:47 -04:00
mach-clps711x Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-cns3xxx Merge branch 'depends/rmk/memory_h' into next/cleanup2 2011-11-01 13:47:27 +01:00
mach-davinci Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
mach-dove Merge branch 'depends/rmk/memory_h' into next/cleanup2 2011-11-01 13:47:27 +01:00
mach-ebsa110 Merge branch 'dt/gic' into highbank/soc 2011-10-31 14:11:34 +01:00
mach-ep93xx Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
mach-exynos Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
mach-footbridge Merge branch 'depends/rmk/memory_h' into next/cleanup2 2011-11-01 13:47:27 +01:00
mach-gemini Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-h720x Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-highbank ARM: highbank: add suspend support 2011-10-31 14:14:05 +01:00
mach-imx Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
mach-integrator Merge branch 'depends/rmk/memory_h' into next/cleanup2 2011-11-01 13:47:27 +01:00
mach-iop13xx arm: Add export.h to ARM specific files as required. 2011-10-31 19:30:50 -04:00
mach-iop32x Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-iop33x Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-ixp4xx Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
mach-ixp23xx Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-ixp2000 arm: Add export.h to ARM specific files as required. 2011-10-31 19:30:50 -04:00
mach-kirkwood Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2011-11-07 10:13:52 -08:00
mach-ks8695 Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-l7200/include/mach
mach-lpc32xx Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-mmp Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
mach-msm Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
mach-mv78xx0 Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-mx5 Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6 2011-11-03 09:40:51 -07:00
mach-mxs Merge branch 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:34:22 -07:00
mach-netx arm: Add export.h to ARM specific files as required. 2011-10-31 19:30:50 -04:00
mach-nomadik Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-omap1 Merge branch 'fixes-modulesplit' into fixes 2011-11-07 12:27:23 -08:00
mach-omap2 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap 2011-11-07 16:14:26 -08:00
mach-orion5x Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
mach-picoxcell
mach-pnx4008 Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-prima2 Merge branch 'next/pm' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:22:01 -07:00
mach-pxa Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
mach-realview Merge branch 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:34:22 -07:00
mach-rpc Merge branch 'dt/gic' into highbank/soc 2011-10-31 14:11:34 +01:00
mach-s3c64xx Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
mach-s3c2410 Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
mach-s3c2412 Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:18:05 -07:00
mach-s3c2416 Merge branch 'next/devel2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:21:21 -07:00
mach-s3c2440 Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:18:05 -07:00
mach-s3c2443 Merge branch 'next/devel2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:21:21 -07:00
mach-s5p64x0 Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:18:05 -07:00
mach-s5pc100 Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:18:05 -07:00
mach-s5pv210 Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:18:05 -07:00
mach-sa1100 arm: fix implicit use of page.h in several arch/arm files 2011-10-31 19:30:46 -04:00
mach-shark Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-shmobile Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
mach-spear3xx Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-spear6xx Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-tcc8k Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mach-tegra arm/tegra: Don't create duplicate gpio and pinmux devices 2011-11-09 10:38:56 -08:00
mach-u300 Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6 2011-11-03 09:40:51 -07:00
mach-ux500 Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6 2011-11-03 09:40:51 -07:00
mach-versatile Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-vexpress Merge branch 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:34:22 -07:00
mach-vt8500 Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-w90x900 Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
mach-zynq Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm 2011-10-28 12:02:27 -07:00
mm Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
nwfpe
oprofile
plat-iop arm: Add export.h to ARM specific files as required. 2011-10-31 19:30:50 -04:00
plat-mxc Merge branch 'next/soc' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 21:08:03 -07:00
plat-nomadik Merge branch 'next/timer' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 20:18:05 -07:00
plat-omap Merge branch 'fixes-modulesplit' into fixes 2011-11-07 12:27:23 -08:00
plat-orion
plat-pxa Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
plat-s3c24xx Merge branch 'next/devel2' of git://git.linaro.org/people/arnd/arm-soc 2011-11-05 18:21:21 -07:00
plat-s5p ARM: EXYNOS: Add ARCH_EXYNOS and reorganize arch/arm/mach-exynos 2011-11-06 13:54:56 +09:00
plat-samsung arm: Add export.h to recently added files for EXPORT_SYMBOL 2011-11-07 10:28:58 -08:00
plat-spear Merge branch 'depends/rmk/memory_h' into next/fixes 2011-11-01 00:25:01 +01:00
plat-tcc
plat-versatile
tools
vfp arm: remove several unnecessary module.h include instances 2011-10-31 19:30:48 -04:00
Kconfig ARM: EXYNOS: Add ARCH_EXYNOS and reorganize arch/arm/mach-exynos 2011-11-06 13:54:56 +09:00
Kconfig-nommu
Kconfig.debug Merge branch 'next/soc' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 21:08:03 -07:00
Makefile ARM: EXYNOS: Add ARCH_EXYNOS and reorganize arch/arm/mach-exynos 2011-11-06 13:54:56 +09:00