From: Linus Torvalds Date: Tue, 29 May 2012 18:53:11 +0000 (-0700) Subject: Merge tag 'mfd-3.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 X-Git-Tag: v3.5-rc1~51 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b781474682434e7881f20e9dfbe6687ea619795;p=profile%2Fivi%2Fkernel-x86-ivi.git Merge tag 'mfd-3.5-1' of git://git./linux/kernel/git/sameo/mfd-2.6 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 ... --- 4b781474682434e7881f20e9dfbe6687ea619795 diff --cc drivers/gpio/Makefile index 07a79e2,2e69c58..fde36e5 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@@ -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 diff --cc drivers/mfd/Kconfig index f4b4dad,5b58be4..e129c82 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@@ -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 diff --cc drivers/mfd/Makefile index 43672b8,afe96b2..75f6ed6 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@@ -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_CORE) += ab8500-core.o ab8500-sysctrl.o -obj-$(CONFIG_AB5500_CORE) += ab5500-core.o -obj-$(CONFIG_AB5500_DEBUG) += ab5500-debugfs.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 diff --cc drivers/mfd/da9052-core.c index 7776aff,5036cf5..1f1313c --- a/drivers/mfd/da9052-core.c +++ b/drivers/mfd/da9052-core.c @@@ -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); } diff --cc drivers/regulator/wm831x-dcdc.c index a885911,33b2f20..099da11 --- a/drivers/regulator/wm831x-dcdc.c +++ b/drivers/regulator/wm831x-dcdc.c @@@ -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; } diff --cc include/linux/mfd/da9052/da9052.h index 8313cd9,b990cca..0507c4c --- a/include/linux/mfd/da9052/da9052.h +++ b/include/linux/mfd/da9052/da9052.h @@@ -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;