linux/arch/arm
Varadarajan, Charulatha 77640aabd7 OMAP: GPIO: Implement GPIO as a platform device
Implement GPIO as a platform device.

GPIO APIs are used in machine_init functions. Hence it is
required to complete GPIO probe before board_init. Therefore
GPIO device register and driver register are implemented as
postcore_initcalls.

omap_gpio_init() does nothing now and this function would be
removed in the next patch as it's usage is spread across most
of the board files.

Inorder to convert GPIO as platform device, modifications are
required in clockxxxx_data.c file for OMAP1 so that device names
can be used to obtain clock instead of getting clocks by
name/NULL ptr.

Use runtime pm APIs (pm_runtime_put*/pm_runtime_get*) for enabling
or disabling the clocks, modify sysconfig settings and remove usage
of clock FW APIs.
Note 1: Converting GPIO driver to use runtime PM APIs is not done as a
separate patch because GPIO clock names are different for various OMAPs
and are different for some of the banks in the same CPU. This would need
usage of cpu_is checks and bank id checks while using clock FW APIs in
the gpio driver. Hence while making GPIO a platform driver framework,
PM runtime APIs are used directly.

Note 2: While implementing GPIO as a platform device, pm runtime APIs
are used as mentioned above and modification is not done in gpio's
prepare for idle/ resume after idle functions. This would be done
in the next patch series and GPIO driver would be made to use dev_pm_ops
instead of sysdev_class in that series only.

Due to the above, the GPIO driver implicitly relies on
CM_AUTOIDLE = 1 on its iclk for power management to work, since the
driver never disables its iclk.
This would be taken care in the next patch series (see Note 3 below).

Refer to
http://www.mail-archive.com/linux-omap@vger.kernel.org/msg39112.html
for more details.

Note 3: only pm_runtime_get_sync is called in gpio's probe() and
pm_runtime_put* is never called. This is to make the implementation
similar to the existing GPIO code. Another patch series would be sent
to correct this.

In OMAP3 and OMAP4 gpio's debounce clocks are optional clocks. They
are enabled/ disabled whenever required using clock framework APIs

TODO:
1. Cleanup the GPIO driver. Use function pointers and register
offest pointers instead of using hardcoded values
2. Remove all cpu_is_ checks and OMAP specific macros
3. Remove usage of gpio_bank array so that only
   instance specific information is used in driver code
4. Rename 'method'/ avoid it's usage
5. Fix the non-wakeup gpios handling for OMAP2430, OMAP3 & OMAP4
6. Modify gpio's prepare for idle/ resume after idle functions
   to use runtime pm implentation.

Signed-off-by: Charulatha V <charu@ti.com>
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Reviewed-by: Basak, Partha <p-basak2@ti.com>
Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
[tony@atomide.com: updated for bank specific revision and updated boards]
Signed-off-by: Tony Lindgren <tony@atomide.com>
2010-12-07 16:26:57 -08:00
..
boot ARM: avoid marking decompressor .stack section as having contents 2010-11-22 12:00:59 +00:00
common ARM: GIC: don't disable software generated interrupts 2010-11-12 15:15:29 +00:00
configs Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2010-10-28 11:13:00 +01:00
include/asm ARM: 6490/1: MM: bugfix: initialize spinlock for init_mm.context 2010-11-23 22:46:12 +00:00
kernel ARM: arch/arm/kernel/traps.c: Convert sprintf_symbol to %pS 2010-11-07 17:58:40 +00:00
lib ARM: 6482/2: Fix find_next_zero_bit and related assembly 2010-11-24 20:17:46 +00:00
mach-aaec2000 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-at91 at91/atmel-mci: inclusion of sd/mmc driver in at91sam9g45 chip and board 2010-10-26 11:32:49 +02:00
mach-bcmring ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-clps711x ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-cns3xxx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-davinci ASoC: davinci: fixes for multi-component 2010-11-17 18:36:40 +00:00
mach-dove arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ebsa110 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-ep93xx ARM: 6462/1: EP93xx: Document DMA M2P API 2010-11-07 16:13:30 +00:00
mach-footbridge ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-gemini arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-h720x ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-imx ARM i.MX27 eukrea: Fix compilation 2010-11-15 09:25:05 +01:00
mach-integrator ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-iop13xx Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-iop32x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-iop33x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp4xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp23xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp2000 ARM: 6460/1: ixp2000: fix type of ixp2000_timer_interrupt 2010-10-27 21:40:28 +01:00
mach-kirkwood Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion 2010-11-07 16:10:56 +00:00
mach-ks8695 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-l7200/include/mach arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-lh7a40x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-loki arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-lpc32xx Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-mmp ARM: mmp: fix cpuid detection on mmp2 2010-11-03 23:11:16 +08:00
mach-msm ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-mv78xx0 Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion 2010-11-07 16:10:56 +00:00
mach-mx3 ARM i.MX pcm037 eet: compile fixes 2010-11-15 09:25:03 +01:00
mach-mx5 Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2010-10-28 11:13:00 +01:00
mach-mx25 mx25: fix spi device registration typo 2010-11-15 09:25:06 +01:00
mach-mxc91231 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-netx ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-nomadik arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ns9xxx arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-nuc93x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-omap1 OMAP: GPIO: Implement GPIO as a platform device 2010-12-07 16:26:57 -08:00
mach-omap2 OMAP: GPIO: Implement GPIO as a platform device 2010-12-07 16:26:57 -08:00
mach-orion5x Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion 2010-11-07 16:10:56 +00:00
mach-pnx4008 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-pxa ARM: pxa/saar: fix the building failure caused by typo 2010-11-03 23:11:19 +08:00
mach-realview arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-rpc ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-s3c24a0/include/mach Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s3c64xx ARM: S3C64XX: fix uart clock setup for mini6410/real6410 2010-11-25 10:58:11 +09:00
mach-s3c2400
mach-s3c2410 ARM: S3C2410: Adapt h1940-bluetooth to gpiolib changes 2010-11-25 10:58:10 +09:00
mach-s3c2412 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s3c2416 ARM: S3C24XX: Fix UART3 submask on S3C2416 and S3C2443 2010-11-25 10:58:11 +09:00
mach-s3c2440 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-30 08:26:25 -07:00
mach-s3c2443 ARM: S3C24XX: Fix UART3 submask on S3C2416 and S3C2443 2010-11-25 10:58:11 +09:00
mach-s5p64x0 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s5p6442 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s5pc100 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s5pv210 ARM: S5PV210: Fix sysdev related warning messages 2010-11-25 10:58:11 +09:00
mach-s5pv310 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-sa1100 ARM: 6449/1: Fix for compiler warning of uninitialized variable. 2010-10-27 21:40:28 +01:00
mach-shark ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-shmobile Merge branch 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2010-11-27 07:17:16 +09:00
mach-spear3xx
mach-spear6xx
mach-stmp37xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-stmp378x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-tcc8k arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-tegra Remove duplicate includes from many files 2010-10-27 18:03:18 -07:00
mach-u300 Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6 2010-11-01 07:50:43 -04:00
mach-ux500 ARM: 6473/1: Small update to ux500 specific L2 cache code 2010-11-21 22:05:56 +00:00
mach-versatile ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-vexpress ARM: 6472/1: vexpress ct-ca9x4: only set twd_base if local timers are being used 2010-11-10 15:11:19 +00:00
mach-w90x900 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mm ARM: avoid annoying <4>'s in printk output 2010-11-23 22:27:55 +00:00
nwfpe Update broken web addresses in arch directory. 2010-10-18 11:03:21 +02:00
oprofile oprofile: Abstract the perf-events backend 2010-10-11 17:46:16 +02:00
plat-iop Merge branch 'misc' into devel 2010-07-31 14:20:02 +01:00
plat-mxc ARM i.MX spi: fix compilation for i.MX21 2010-11-15 09:25:04 +01:00
plat-nomadik ARM: 6488/1: nomadik: prevent sched_clock() wraparound 2010-11-21 22:05:57 +00:00
plat-omap OMAP: GPIO: Implement GPIO as a platform device 2010-12-07 16:26:57 -08:00
plat-orion [ARM] Kirkwood: restrict the scope of the PCIe reset workaround 2010-10-21 15:52:03 -04:00
plat-pxa mmc: sdhci: 8-bit bus width changes 2010-11-22 15:12:04 -05:00
plat-s3c24xx ARM: S3C24XX: Fix wrong s3c_gpio_cfgpull 2010-11-25 10:58:10 +09:00
plat-s5p ARM: S5P: Add initial map for GPIO2 and GPIO3 2010-10-25 16:06:22 +09:00
plat-samsung Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
plat-spear arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-stmp3xxx arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-tcc arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-versatile ARM: 6264/1: fix Versatile Express LED oversight 2010-07-26 10:48:34 +01:00
tools ARM: Update mach-types 2010-09-09 22:49:26 +01:00
vfp
Kconfig Merge branch 's5p-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung 2010-11-15 08:43:04 -08:00
Kconfig-nommu
Kconfig.debug Merge branch 'devel-stable' into devel 2010-10-19 22:06:36 +01:00
Makefile Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-19 20:12:24 +01:00