aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-03 12:40:51 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-03 12:40:51 -0400
commita0a4194c943bc64dd7b6e26cccb036cb26b81363 (patch)
tree4282f0dd573344d10f69616eb05868b5cd563cc1 /arch/arm
parentcf0223503e6198292cdcc864e01eeb5fe7490752 (diff)
parentb958f7a7cbdfbf59ba61de7ebb9c59b0ee3a7967 (diff)
Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6
* 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6: (80 commits) mfd: Fix missing abx500 header file updates mfd: Add missing <linux/io.h> include to intel_msic x86, mrst: add platform support for MSIC MFD driver mfd: Expose TurnOnStatus in ab8500 sysfs mfd: Remove support for early drop ab8500 chip mfd: Add support for ab8500 v3.3 mfd: Add ab8500 interrupt disable hook mfd: Convert db8500-prcmu panic() into pr_crit() mfd: Refactor db8500-prcmu request_clock() function mfd: Rename db8500-prcmu init function mfd: Fix db5500-prcmu defines mfd: db8500-prcmu voltage domain consumers additions mfd: db8500-prcmu reset code retrieval mfd: db8500-prcmu tweak for modem wakeup mfd: Add db8500-pcmu watchdog accessor functions for watchdog mfd: hwacc power state db8500-prcmu accessor mfd: Add db8500-prcmu accessors for PLL and SGA clock mfd: Move to the new db500 PRCMU API mfd: Create a common interface for dbx500 PRCMU drivers mfd: Initialize DB8500 PRCMU regs ... Fix up trivial conflicts in arch/arm/mach-imx/mach-mx31moboard.c arch/arm/mach-omap2/board-omap3beagle.c arch/arm/mach-u300/include/mach/irqs.h drivers/mfd/wm831x-spi.c
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-imx/mach-mx27_3ds.c3
-rw-r--r--arch/arm/mach-imx/mach-mx31_3ds.c2
-rw-r--r--arch/arm/mach-imx/mach-mx31lite.c3
-rw-r--r--arch/arm/mach-imx/mach-mx31moboard.c15
-rw-r--r--arch/arm/mach-imx/mach-pcm038.c3
-rw-r--r--arch/arm/mach-mx5/mx51_efika.c2
-rw-r--r--arch/arm/mach-omap2/Kconfig1
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c9
-rw-r--r--arch/arm/mach-u300/i2c.c51
-rw-r--r--arch/arm/mach-u300/include/mach/irqs.h10
-rw-r--r--arch/arm/mach-ux500/board-u5500.c29
-rw-r--r--arch/arm/mach-ux500/cpu.c2
12 files changed, 55 insertions, 75 deletions
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index cfa84178eb26..ba232d79fa81 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -293,8 +293,7 @@ static struct mc13xxx_platform_data mc13783_pdata = {
293 .num_regulators = ARRAY_SIZE(mx27_3ds_regulators), 293 .num_regulators = ARRAY_SIZE(mx27_3ds_regulators),
294 294
295 }, 295 },
296 .flags = MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN | 296 .flags = MC13XXX_USE_TOUCHSCREEN | MC13XXX_USE_RTC,
297 MC13783_USE_RTC,
298}; 297};
299 298
300/* SPI */ 299/* SPI */
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c
index 60f1fda6ce97..b8c54b840185 100644
--- a/arch/arm/mach-imx/mach-mx31_3ds.c
+++ b/arch/arm/mach-imx/mach-mx31_3ds.c
@@ -492,7 +492,7 @@ static struct mc13xxx_platform_data mc13783_pdata = {
492 .regulators = mx31_3ds_regulators, 492 .regulators = mx31_3ds_regulators,
493 .num_regulators = ARRAY_SIZE(mx31_3ds_regulators), 493 .num_regulators = ARRAY_SIZE(mx31_3ds_regulators),
494 }, 494 },
495 .flags = MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN, 495 .flags = MC13XXX_USE_TOUCHSCREEN,
496}; 496};
497 497
498/* SPI */ 498/* SPI */
diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c
index c97c26d814ed..05f1c71ba409 100644
--- a/arch/arm/mach-imx/mach-mx31lite.c
+++ b/arch/arm/mach-imx/mach-mx31lite.c
@@ -112,8 +112,7 @@ static const struct spi_imx_master spi1_pdata __initconst = {
112}; 112};
113 113
114static struct mc13xxx_platform_data mc13783_pdata __initdata = { 114static struct mc13xxx_platform_data mc13783_pdata __initdata = {
115 .flags = MC13XXX_USE_RTC | 115 .flags = MC13XXX_USE_RTC,
116 MC13XXX_USE_REGULATOR,
117}; 116};
118 117
119static struct spi_board_info mc13783_spi_dev __initdata = { 118static struct spi_board_info mc13783_spi_dev __initdata = {
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index fff7791b7e7c..07034f44466a 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -31,6 +31,7 @@
31#include <linux/clk.h> 31#include <linux/clk.h>
32#include <linux/io.h> 32#include <linux/io.h>
33#include <linux/err.h> 33#include <linux/err.h>
34#include <linux/input.h>
34 35
35#include <linux/usb/otg.h> 36#include <linux/usb/otg.h>
36#include <linux/usb/ulpi.h> 37#include <linux/usb/ulpi.h>
@@ -225,7 +226,7 @@ static struct mc13xxx_regulator_init_data moboard_regulators[] = {
225 }, 226 },
226}; 227};
227 228
228static struct mc13783_led_platform_data moboard_led[] = { 229static struct mc13xxx_led_platform_data moboard_led[] = {
229 { 230 {
230 .id = MC13783_LED_R1, 231 .id = MC13783_LED_R1,
231 .name = "coreboard-led-4:red", 232 .name = "coreboard-led-4:red",
@@ -258,7 +259,7 @@ static struct mc13783_led_platform_data moboard_led[] = {
258 }, 259 },
259}; 260};
260 261
261static struct mc13783_leds_platform_data moboard_leds = { 262static struct mc13xxx_leds_platform_data moboard_leds = {
262 .num_leds = ARRAY_SIZE(moboard_led), 263 .num_leds = ARRAY_SIZE(moboard_led),
263 .led = moboard_led, 264 .led = moboard_led,
264 .flags = MC13783_LED_SLEWLIMTC, 265 .flags = MC13783_LED_SLEWLIMTC,
@@ -267,14 +268,20 @@ static struct mc13783_leds_platform_data moboard_leds = {
267 .tc2_period = MC13783_LED_PERIOD_10MS, 268 .tc2_period = MC13783_LED_PERIOD_10MS,
268}; 269};
269 270
271static struct mc13xxx_buttons_platform_data moboard_buttons = {
272 .b1on_flags = MC13783_BUTTON_DBNC_750MS | MC13783_BUTTON_ENABLE |
273 MC13783_BUTTON_POL_INVERT,
274 .b1on_key = KEY_POWER,
275};
276
270static struct mc13xxx_platform_data moboard_pmic = { 277static struct mc13xxx_platform_data moboard_pmic = {
271 .regulators = { 278 .regulators = {
272 .regulators = moboard_regulators, 279 .regulators = moboard_regulators,
273 .num_regulators = ARRAY_SIZE(moboard_regulators), 280 .num_regulators = ARRAY_SIZE(moboard_regulators),
274 }, 281 },
275 .leds = &moboard_leds, 282 .leds = &moboard_leds,
276 .flags = MC13XXX_USE_REGULATOR | MC13XXX_USE_RTC | 283 .buttons = &moboard_buttons,
277 MC13XXX_USE_ADC | MC13XXX_USE_LED, 284 .flags = MC13XXX_USE_RTC | MC13XXX_USE_ADC,
278}; 285};
279 286
280static struct spi_board_info moboard_spi_board_info[] __initdata = { 287static struct spi_board_info moboard_spi_board_info[] __initdata = {
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c
index 100bc733ce93..a17e9c7dfca0 100644
--- a/arch/arm/mach-imx/mach-pcm038.c
+++ b/arch/arm/mach-imx/mach-pcm038.c
@@ -268,8 +268,7 @@ static struct mc13xxx_platform_data pcm038_pmic = {
268 .regulators = pcm038_regulators, 268 .regulators = pcm038_regulators,
269 .num_regulators = ARRAY_SIZE(pcm038_regulators), 269 .num_regulators = ARRAY_SIZE(pcm038_regulators),
270 }, 270 },
271 .flags = MC13783_USE_ADC | MC13783_USE_REGULATOR | 271 .flags = MC13XXX_USE_ADC | MC13XXX_USE_TOUCHSCREEN,
272 MC13783_USE_TOUCHSCREEN,
273}; 272};
274 273
275static struct spi_board_info pcm038_spi_board_info[] __initdata = { 274static struct spi_board_info pcm038_spi_board_info[] __initdata = {
diff --git a/arch/arm/mach-mx5/mx51_efika.c b/arch/arm/mach-mx5/mx51_efika.c
index b004e178417d..ec6ca91b299b 100644
--- a/arch/arm/mach-mx5/mx51_efika.c
+++ b/arch/arm/mach-mx5/mx51_efika.c
@@ -565,7 +565,7 @@ static struct mc13xxx_regulator_init_data mx51_efika_regulators[] = {
565}; 565};
566 566
567static struct mc13xxx_platform_data mx51_efika_mc13892_data = { 567static struct mc13xxx_platform_data mx51_efika_mc13892_data = {
568 .flags = MC13XXX_USE_RTC | MC13XXX_USE_REGULATOR, 568 .flags = MC13XXX_USE_RTC,
569 .regulators = { 569 .regulators = {
570 .num_regulators = ARRAY_SIZE(mx51_efika_regulators), 570 .num_regulators = ARRAY_SIZE(mx51_efika_regulators),
571 .regulators = mx51_efika_regulators, 571 .regulators = mx51_efika_regulators,
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 497e9dc27958..503414718905 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -14,7 +14,6 @@ config ARCH_OMAP2PLUS_TYPICAL
14 select SERIAL_OMAP_CONSOLE 14 select SERIAL_OMAP_CONSOLE
15 select I2C 15 select I2C
16 select I2C_OMAP 16 select I2C_OMAP
17 select MFD_SUPPORT
18 select MENELAUS if ARCH_OMAP2 17 select MENELAUS if ARCH_OMAP2
19 select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4 18 select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
20 select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4 19 select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 70261bcda3f9..4a71cb7e42d4 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -378,7 +378,8 @@ static struct i2c_board_info __initdata beagle_i2c_eeprom[] = {
378static int __init omap3_beagle_i2c_init(void) 378static int __init omap3_beagle_i2c_init(void)
379{ 379{
380 omap3_pmic_get_config(&beagle_twldata, 380 omap3_pmic_get_config(&beagle_twldata,
381 TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_AUDIO, 381 TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC |
382 TWL_COMMON_PDATA_AUDIO,
382 TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); 383 TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
383 384
384 beagle_twldata.vpll2->constraints.name = "VDVI"; 385 beagle_twldata.vpll2->constraints.name = "VDVI";
@@ -444,9 +445,15 @@ static struct platform_device keys_gpio = {
444 }, 445 },
445}; 446};
446 447
448static struct platform_device madc_hwmon = {
449 .name = "twl4030_madc_hwmon",
450 .id = -1,
451};
452
447static struct platform_device *omap3_beagle_devices[] __initdata = { 453static struct platform_device *omap3_beagle_devices[] __initdata = {
448 &leds_gpio, 454 &leds_gpio,
449 &keys_gpio, 455 &keys_gpio,
456 &madc_hwmon,
450}; 457};
451 458
452static const struct usbhs_omap_board_data usbhs_bdata __initconst = { 459static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
diff --git a/arch/arm/mach-u300/i2c.c b/arch/arm/mach-u300/i2c.c
index f0394baa11fa..5140deeddf7b 100644
--- a/arch/arm/mach-u300/i2c.c
+++ b/arch/arm/mach-u300/i2c.c
@@ -256,57 +256,8 @@ static struct ab3100_platform_data ab3100_plf_data = {
256}; 256};
257#endif 257#endif
258 258
259#ifdef CONFIG_AB3550_CORE
260static struct abx500_init_settings ab3550_init_settings[] = {
261 {
262 .bank = 0,
263 .reg = AB3550_IMR1,
264 .setting = 0xff
265 },
266 {
267 .bank = 0,
268 .reg = AB3550_IMR2,
269 .setting = 0xff
270 },
271 {
272 .bank = 0,
273 .reg = AB3550_IMR3,
274 .setting = 0xff
275 },
276 {
277 .bank = 0,
278 .reg = AB3550_IMR4,
279 .setting = 0xff
280 },
281 {
282 .bank = 0,
283 .reg = AB3550_IMR5,
284 /* The two most significant bits are not used */
285 .setting = 0x3f
286 },
287};
288
289static struct ab3550_platform_data ab3550_plf_data = {
290 .irq = {
291 .base = IRQ_AB3550_BASE,
292 .count = (IRQ_AB3550_END - IRQ_AB3550_BASE + 1),
293 },
294 .dev_data = {
295 },
296 .init_settings = ab3550_init_settings,
297 .init_settings_sz = ARRAY_SIZE(ab3550_init_settings),
298};
299#endif
300
301static struct i2c_board_info __initdata bus0_i2c_board_info[] = { 259static struct i2c_board_info __initdata bus0_i2c_board_info[] = {
302#if defined(CONFIG_AB3550_CORE) 260#ifdef CONFIG_AB3100_CORE
303 {
304 .type = "ab3550",
305 .addr = 0x4A,
306 .irq = IRQ_U300_IRQ0_EXT,
307 .platform_data = &ab3550_plf_data,
308 },
309#elif defined(CONFIG_AB3100_CORE)
310 { 261 {
311 .type = "ab3100", 262 .type = "ab3100",
312 .addr = 0x48, 263 .addr = 0x48,
diff --git a/arch/arm/mach-u300/include/mach/irqs.h b/arch/arm/mach-u300/include/mach/irqs.h
index d270fea32926..db3fbfa1d6e9 100644
--- a/arch/arm/mach-u300/include/mach/irqs.h
+++ b/arch/arm/mach-u300/include/mach/irqs.h
@@ -117,14 +117,6 @@
117#define IRQ_U300_GPIO_END (U300_VIC_IRQS_END) 117#define IRQ_U300_GPIO_END (U300_VIC_IRQS_END)
118#endif 118#endif
119 119
120/* Optional AB3550 mixsig chip */ 120#define NR_IRQS (IRQ_U300_GPIO_END)
121#ifdef CONFIG_AB3550_CORE
122#define IRQ_AB3550_BASE (IRQ_U300_GPIO_END)
123#define IRQ_AB3550_END (IRQ_AB3550_BASE + 38)
124#else
125#define IRQ_AB3550_END (IRQ_U300_GPIO_END)
126#endif
127
128#define NR_IRQS (IRQ_AB3550_END)
129 121
130#endif 122#endif
diff --git a/arch/arm/mach-ux500/board-u5500.c b/arch/arm/mach-ux500/board-u5500.c
index e014aa749b03..82025ba70c03 100644
--- a/arch/arm/mach-ux500/board-u5500.c
+++ b/arch/arm/mach-ux500/board-u5500.c
@@ -10,6 +10,7 @@
10#include <linux/amba/bus.h> 10#include <linux/amba/bus.h>
11#include <linux/irq.h> 11#include <linux/irq.h>
12#include <linux/i2c.h> 12#include <linux/i2c.h>
13#include <linux/mfd/ab5500/ab5500.h>
13 14
14#include <asm/mach/arch.h> 15#include <asm/mach/arch.h>
15#include <asm/mach-types.h> 16#include <asm/mach-types.h>
@@ -87,7 +88,6 @@ static struct lm3530_platform_data u5500_als_platform_data = {
87 .brt_val = 0x7F, /* Max brightness */ 88 .brt_val = 0x7F, /* Max brightness */
88}; 89};
89 90
90
91static struct i2c_board_info __initdata u5500_i2c2_devices[] = { 91static struct i2c_board_info __initdata u5500_i2c2_devices[] = {
92 { 92 {
93 /* Backlight */ 93 /* Backlight */
@@ -101,6 +101,30 @@ static void __init u5500_i2c_init(void)
101 db5500_add_i2c2(&u5500_i2c2_data); 101 db5500_add_i2c2(&u5500_i2c2_data);
102 i2c_register_board_info(2, ARRAY_AND_SIZE(u5500_i2c2_devices)); 102 i2c_register_board_info(2, ARRAY_AND_SIZE(u5500_i2c2_devices));
103} 103}
104
105static struct ab5500_platform_data ab5500_plf_data = {
106 .irq = {
107 .base = 0,
108 .count = 0,
109 },
110 .init_settings = NULL,
111 .init_settings_sz = 0,
112 .pm_power_off = false,
113};
114
115static struct platform_device ab5500_device = {
116 .name = "ab5500-core",
117 .id = 0,
118 .dev = {
119 .platform_data = &ab5500_plf_data,
120 },
121 .num_resources = 0,
122};
123
124static struct platform_device *u5500_platform_devices[] __initdata = {
125 &ab5500_device,
126};
127
104static void __init u5500_uart_init(void) 128static void __init u5500_uart_init(void)
105{ 129{
106 db5500_add_uart0(NULL); 130 db5500_add_uart0(NULL);
@@ -115,6 +139,9 @@ static void __init u5500_init_machine(void)
115 u5500_i2c_init(); 139 u5500_i2c_init();
116 u5500_sdi_init(); 140 u5500_sdi_init();
117 u5500_uart_init(); 141 u5500_uart_init();
142
143 platform_add_devices(u5500_platform_devices,
144 ARRAY_SIZE(u5500_platform_devices));
118} 145}
119 146
120MACHINE_START(U5500, "ST-Ericsson U5500 Platform") 147MACHINE_START(U5500, "ST-Ericsson U5500 Platform")
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index 1405d0eb7edb..f41857494375 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -47,6 +47,6 @@ void __init ux500_init_irq(void)
47 if (cpu_is_u5500()) 47 if (cpu_is_u5500())
48 db5500_prcmu_early_init(); 48 db5500_prcmu_early_init();
49 if (cpu_is_u8500()) 49 if (cpu_is_u8500())
50 prcmu_early_init(); 50 db8500_prcmu_early_init();
51 clk_init(); 51 clk_init();
52} 52}