From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu, 24 May 2012 21:01:46 +0000 (-0700)
Subject: Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6
X-Git-Tag: v3.5-rc1~93
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b1bf7d4d1b3911352cf1ec63c1de06214288ccd0;p=users%2Fdwmw2%2Flinux.git

Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6

Pull GPIO driver changes from Grant Likely:
 "Lots of gpio changes, both to core code and drivers.

  Changes do touch architecture code to remove the need for separate
  arm/gpio.h includes in most architectures.

  Some new drivers are added, and a number of gpio drivers are converted
  to use irq_domains for gpio inputs used as interrupts.  Device tree
  support has been amended to allow multiple gpio_chips to use the same
  device tree node.

  Remaining changes are primarily bug fixes."

* tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6: (33 commits)
  gpio/generic: initialize basic_mmio_gpio shadow variables properly
  gpiolib: Remove 'const' from data argument of gpiochip_find()
  gpio/rc5t583: add gpio driver for RICOH PMIC RC5T583
  gpiolib: quiet gpiochip_add boot message noise
  gpio: mpc8xxx: Prevent NULL pointer deref in demux handler
  gpio/lpc32xx: Add device tree support
  gpio: Adjust of_xlate API to support multiple GPIO chips
  gpiolib: Implement devm_gpio_request_one()
  gpio-mcp23s08: dbg_show: fix pullup configuration display
  Add support for TCA6424A
  gpio/omap: (re)fix wakeups on level-triggered GPIOs
  gpio/omap: fix broken context restore for non-OFF mode transitions
  gpio/omap: fix missing check in *_runtime_suspend()
  gpio/omap: remove cpu_is_omapxxxx() checks from *_runtime_resume()
  gpio/omap: remove suspend/resume callbacks
  gpio/omap: remove retrigger variable in gpio_irq_handler
  gpio/omap: remove saved_wakeup field from struct gpio_bank
  gpio/omap: remove suspend_wakeup field from struct gpio_bank
  gpio/omap: remove saved_fallingdetect, saved_risingdetect
  gpio/omap: remove virtual_irq_start variable
  ...

Conflicts:
	drivers/gpio/gpio-samsung.c
---

b1bf7d4d1b3911352cf1ec63c1de06214288ccd0
diff --cc arch/arm/mach-omap2/gpio.c
index a80e093b039fa,a144e22969a37..9ad7d489b0deb
--- a/arch/arm/mach-omap2/gpio.c
+++ b/arch/arm/mach-omap2/gpio.c
@@@ -56,10 -55,9 +56,9 @@@ static int __init omap2_gpio_dev_init(s
  	dev_attr = (struct omap_gpio_dev_attr *)oh->dev_attr;
  	pdata->bank_width = dev_attr->bank_width;
  	pdata->dbck_flag = dev_attr->dbck_flag;
- 	pdata->virtual_irq_start = IH_GPIO_BASE + 32 * (id - 1);
  	pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count;
  	pdata->regs = kzalloc(sizeof(struct omap_gpio_reg_offs), GFP_KERNEL);
 -	if (!pdata) {
 +	if (!pdata->regs) {
  		pr_err("gpio%d: Memory allocation failed\n", id);
  		return -ENOMEM;
  	}
diff --cc arch/avr32/Kconfig
index f8bc2d27d1488,859b2de4a624a..71d38c76726cb
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@@ -11,8 -11,8 +11,9 @@@ config AVR3
  	select GENERIC_ATOMIC64
  	select HARDIRQS_SW_RESEND
  	select GENERIC_IRQ_SHOW
+ 	select ARCH_HAVE_CUSTOM_GPIO_H
  	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 +	select GENERIC_CLOCKEVENTS
  	help
  	  AVR32 is a high-performance 32-bit RISC microprocessor core,
  	  designed for cost-sensitive embedded applications, with particular
diff --cc drivers/of/Makefile
index 0040d1858665c,aff2c62303907..e027f444d10cf
--- a/drivers/of/Makefile
+++ b/drivers/of/Makefile
@@@ -4,9 -4,9 +4,8 @@@ obj-$(CONFIG_OF_PROMTREE) += pdt.
  obj-$(CONFIG_OF_ADDRESS)  += address.o
  obj-$(CONFIG_OF_IRQ)    += irq.o
  obj-$(CONFIG_OF_DEVICE) += device.o platform.o
- obj-$(CONFIG_OF_GPIO)   += gpio.o
  obj-$(CONFIG_OF_I2C)	+= of_i2c.o
  obj-$(CONFIG_OF_NET)	+= of_net.o
 -obj-$(CONFIG_OF_SPI)	+= of_spi.o
  obj-$(CONFIG_OF_SELFTEST) += selftest.o
  obj-$(CONFIG_OF_MDIO)	+= of_mdio.o
  obj-$(CONFIG_OF_PCI)	+= of_pci.o
diff --cc include/linux/mfd/rc5t583.h
index c42fe92a727da,7875370f7bcaa..3661c59aa1e9f
--- a/include/linux/mfd/rc5t583.h
+++ b/include/linux/mfd/rc5t583.h
@@@ -292,21 -272,14 +292,23 @@@ struct rc5t583 
   * rc5t583_platform_data: Platform data for ricoh rc5t583 pmu.
   * The board specific data is provided through this structure.
   * @irq_base: Irq base number on which this device registers their interrupts.
+  * @gpio_base: GPIO base from which gpio of this device will start.
   * @enable_shutdown: Enable shutdown through the input pin "shutdown".
 + * @regulator_deepsleep_slot: The slot number on which device goes to sleep
 + *		in device sleep mode.
 + * @regulator_ext_pwr_control: External power request regulator control. The
 + *		regulator output enable/disable is controlled by the external
 + *		power request input state.
 + * @reg_init_data: Regulator init data.
   */
  
  struct rc5t583_platform_data {
  	int		irq_base;
+ 	int		gpio_base;
  	bool		enable_shutdown;
 +	int		regulator_deepsleep_slot[RC5T583_REGULATOR_MAX];
 +	unsigned long	regulator_ext_pwr_control[RC5T583_REGULATOR_MAX];
 +	struct regulator_init_data *reg_init_data[RC5T583_REGULATOR_MAX];
  };
  
  static inline int rc5t583_write(struct device *dev, uint8_t reg, uint8_t val)