Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6
Linus Torvalds [Thu, 24 May 2012 21:01:46 +0000 (14:01 -0700)]
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

17 files changed:
1  2 
arch/arm/Kconfig
arch/arm/mach-imx/mach-mx35_3ds.c
arch/arm/mach-omap2/gpio.c
arch/avr32/Kconfig
arch/blackfin/Kconfig
arch/m68k/Kconfig.cpu
arch/mips/Kconfig
arch/sh/Kconfig
arch/unicore32/Kconfig
drivers/gpio/Kconfig
drivers/gpio/Makefile
drivers/gpio/devres.c
drivers/gpio/gpio-pch.c
drivers/gpio/gpio-samsung.c
drivers/of/Kconfig
drivers/of/Makefile
include/linux/mfd/rc5t583.h

Simple merge
Simple merge
@@@ -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;
        }
@@@ -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
Simple merge
Simple merge
Simple merge
diff --cc arch/sh/Kconfig
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -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
@@@ -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)