Merge tag 'mfd-3.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Linus Torvalds [Tue, 29 May 2012 18:53:11 +0000 (11:53 -0700)]
Pull MFD changes from Samuel Ortiz:
 "Besides the usual cleanups, this one brings:

   * Support for 5 new chipsets: Intel's ICH LPC and SCH Centerton,
     ST-E's STAX211, Samsung's MAX77693 and TI's LM3533.

   * Device tree support for the twl6040, tps65910, da9502 and ab8500
     drivers.

   * Fairly big tps56910, ab8500 and db8500 updates.

   * i2c support for mc13xxx.

   * Our regular update for the wm8xxx driver from Mark."

Fix up various conflicts with other trees, largely due to ab5500 removal
etc.

* tag 'mfd-3.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (106 commits)
  mfd: Fix build break of max77693 by adding REGMAP_I2C option
  mfd: Fix twl6040 build failure
  mfd: Fix max77693 build failure
  mfd: ab8500-core should depend on MFD_DB8500_PRCMU
  gpio: tps65910: dt: process gpio specific device node info
  mfd: Remove the parsing of dt info for tps65910 gpio
  mfd: Save device node parsed platform data for tps65910 sub devices
  mfd: Add r_select to lm3533 platform data
  gpio: Add Intel Centerton support to gpio-sch
  mfd: Emulate active low IRQs as well as active high IRQs for wm831x
  mfd: Mark two lm3533 zone registers as volatile
  mfd: Fix return type of lm533 attribute is_visible
  mfd: Enable Device Tree support in the ab8500-pwm driver
  mfd: Enable Device Tree support in the ab8500-sysctrl driver
  mfd: Add support for Device Tree to twl6040
  mfd: Register the twl6040 child for the ASoC codec unconditionally
  mfd: Allocate twl6040 IRQ numbers dynamically
  mfd: twl6040 code cleanup in interrupt initialization part
  mfd: Enable ab8500-gpadc driver for Device Tree
  mfd: Prevent unassigned pointer from being used in ab8500-gpadc driver
  ...

18 files changed:
1  2 
MAINTAINERS
arch/arm/mach-ux500/board-mop500.c
drivers/gpio/Kconfig
drivers/gpio/Makefile
drivers/mfd/Kconfig
drivers/mfd/Makefile
drivers/mfd/da9052-core.c
drivers/mfd/mc13xxx-core.c
drivers/mfd/tps65090.c
drivers/regulator/anatop-regulator.c
drivers/regulator/tps65910-regulator.c
drivers/regulator/wm831x-dcdc.c
drivers/regulator/wm831x-isink.c
drivers/regulator/wm831x-ldo.c
drivers/watchdog/Kconfig
include/linux/mfd/asic3.h
include/linux/mfd/da9052/da9052.h
include/linux/mfd/wm8994/core.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
@@@ -16,9 -15,9 +16,10 @@@ obj-$(CONFIG_GPIO_BT8XX)     += gpio-bt8xx.
  obj-$(CONFIG_GPIO_CS5535)     += gpio-cs5535.o
  obj-$(CONFIG_GPIO_DA9052)     += gpio-da9052.o
  obj-$(CONFIG_ARCH_DAVINCI)    += gpio-davinci.o
 +obj-$(CONFIG_GPIO_EM)         += gpio-em.o
  obj-$(CONFIG_GPIO_EP93XX)     += gpio-ep93xx.o
  obj-$(CONFIG_GPIO_GE_FPGA)    += gpio-ge.o
+ obj-$(CONFIG_GPIO_ICH)                += gpio-ich.o
  obj-$(CONFIG_GPIO_IT8761E)    += gpio-it8761e.o
  obj-$(CONFIG_GPIO_JANZ_TTL)   += gpio-janz-ttl.o
  obj-$(CONFIG_ARCH_KS8695)     += gpio-ks8695.o
@@@ -649,9 -691,26 +692,9 @@@ config EZX_PCA
          This enables the PCAP ASIC present on EZX Phones. This is
          needed for MMC, TouchScreen, Sound, USB, etc..
  
 -config AB5500_CORE
 -      bool "ST-Ericsson AB5500 Mixed Signal Power Management chip"
 -      depends on ABX500_CORE && MFD_DB5500_PRCMU
 -      select MFD_CORE
 -      help
 -        Select this option to enable access to AB5500 power management
 -        chip. This connects to the db5500 chip via the I2C bus via PRCMU.
 -        This chip embeds various other multimedia funtionalities as well.
 -
 -config AB5500_DEBUG
 -      bool "Enable debug info via debugfs"
 -      depends on AB5500_CORE && DEBUG_FS
 -      default y if DEBUG_FS
 -      help
 -        Select this option if you want debug information from the AB5500
 -        using the debug filesystem, debugfs.
 -
  config AB8500_CORE
        bool "ST-Ericsson AB8500 Mixed Signal Power Management chip"
-       depends on GENERIC_HARDIRQS && ABX500_CORE
+       depends on GENERIC_HARDIRQS && ABX500_CORE && MFD_DB8500_PRCMU
        select MFD_CORE
        help
          Select this option to enable access to AB8500 power management
@@@ -87,12 -91,14 +91,11 @@@ obj-$(CONFIG_PCF50633_GPIO)        += pcf50633
  obj-$(CONFIG_ABX500_CORE)     += abx500-core.o
  obj-$(CONFIG_AB3100_CORE)     += ab3100-core.o
  obj-$(CONFIG_AB3100_OTP)      += ab3100-otp.o
  obj-$(CONFIG_AB8500_DEBUG)    += ab8500-debugfs.o
  obj-$(CONFIG_AB8500_GPADC)    += ab8500-gpadc.o
  obj-$(CONFIG_MFD_DB8500_PRCMU)        += db8500-prcmu.o
- # ab8500-i2c need to come after db8500-prcmu (which provides the channel)
- obj-$(CONFIG_AB8500_I2C_CORE) += ab8500-i2c.o
+ # ab8500-core need to come after db8500-prcmu (which provides the channel)
+ obj-$(CONFIG_AB8500_CORE)     += ab8500-core.o ab8500-sysctrl.o
 -obj-$(CONFIG_MFD_DB5500_PRCMU)        += db5500-prcmu.o
  obj-$(CONFIG_MFD_TIMBERDALE)    += timberdale.o
  obj-$(CONFIG_PMIC_ADP5520)    += adp5520.o
  obj-$(CONFIG_LPC_SCH)         += lpc_sch.o
@@@ -663,8 -795,15 +795,14 @@@ int __devinit da9052_device_init(struc
        if (ret < 0)
                goto regmap_err;
  
 -      desc = irq_to_desc(da9052->chip_irq);
 -      da9052->irq_base = regmap_irq_chip_get_base(desc->action->dev_id);
 +      da9052->irq_base = regmap_irq_chip_get_base(da9052->irq_data);
  
+       ret = request_threaded_irq(DA9052_IRQ_ADC_EOM, NULL, da9052_auxadc_irq,
+                                  IRQF_TRIGGER_LOW | IRQF_ONESHOT,
+                                  "adc irq", da9052);
+       if (ret != 0)
+               dev_err(da9052->dev, "DA9052 ADC IRQ failed ret=%d\n", ret);
        ret = mfd_add_devices(da9052->dev, -1, da9052_subdev_info,
                              ARRAY_SIZE(da9052_subdev_info), NULL, 0);
        if (ret)
@@@ -680,7 -820,9 +819,8 @@@ regmap_err
  
  void da9052_device_exit(struct da9052 *da9052)
  {
+       free_irq(DA9052_IRQ_ADC_EOM, da9052);
 -      regmap_del_irq_chip(da9052->chip_irq,
 -                          irq_get_irq_data(da9052->irq_base)->chip_data);
 +      regmap_del_irq_chip(da9052->chip_irq, da9052->irq_data);
        mfd_remove_devices(da9052->dev);
  }
  
Simple merge
Simple merge
Simple merge
@@@ -885,8 -915,10 +890,9 @@@ static __devexit int wm831x_boostp_remo
  
        platform_set_drvdata(pdev, NULL);
  
-       free_irq(platform_get_irq_byname(pdev, "UV"), dcdc);
+       free_irq(wm831x_irq(dcdc->wm831x, platform_get_irq_byname(pdev, "UV")),
+                dcdc);
        regulator_unregister(dcdc->regulator);
 -      kfree(dcdc);
  
        return 0;
  }
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -79,8 -91,10 +91,11 @@@ struct da9052 
        struct device *dev;
        struct regmap *regmap;
  
+       struct mutex auxadc_lock;
+       struct completion done;
        int irq_base;
 +      struct regmap_irq_chip_data *irq_data;
        u8 chip_id;
  
        int chip_irq;
Simple merge