diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 15:41:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 15:41:17 -0400 |
commit | 3e701cdfe601306817604ca7f79f1d1c1088007c (patch) | |
tree | 1b0a4088a091f035d8be06758a604ca449223fc0 /arch/arm/mach-ux500 | |
parent | 7d3d09b01a028e9dd1282149fdcd2a6e0edd73e4 (diff) | |
parent | 3c1534c7ecffeb4330bba4c55d17f301528195b6 (diff) |
Merge tag 'mfd-3.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Pull MFD bits from Samuel Ortiz:
"We have support for a few new drivers:
- Samsung s2mps11
- Wolfson Microelectronics wm5102 and wm5110
- Marvell 88PM800 and 88PM805
- TI twl6041
We also have our regular driver improvements:
- Device tree and IRQ domain support for STE AB8500
- Regmap and devm_* API conversion for TI tps6586x
- Device tree support for Samsung max77686
- devm_* API conversion for STE AB3100
Besides that, quite a lot of fixing and cleanup for mc13xxx, tps65910,
tps65090, da9052 and twl-core."
Fix up mostly trivial conflicts, with the exception of
drivers/usb/host/ehci-omap.c in particular, which had some
re-organization of the reset sequence (commit 1a49e2ac9651: "EHCI:
centralize controller initialization") that clashed with commit
2761a6394516 ("mfd: USB: Fix the omap-usb EHCI ULPI PHY reset fix
issues").
In particular, commit 2761a6394516 moved the usb_add_hcd() to the
*middle* of the reset sequence, which clashes fairly badly with the
reset sequence re-organization (although it could have been done inside
the new omap_ehci_init() function).
I left that part of commit 2761a6394516 just undone.
* tag 'mfd-3.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (110 commits)
mfd: Ensure AB8500 platform data is passed through db8500-prcmu to MFD Core
mfd: Arizone core should select MFD_CORE
mfd: Fix arizona-irq.c build by selecting REGMAP_IRQ
mfd: Add debug trace on entering and leaving arizone runtime suspend
mfd: Correct tps65090 cell names
mfd: Remove gpio support from tps6586x core driver
ARM: tegra: defconfig: Enable tps6586x gpio
gpio: tps6586x: Add gpio support through platform driver
mfd: Cache tps6586x register through regmap
mfd: Use regmap for tps6586x register access.
mfd: Use devm managed resources for tps6586x
input: Add onkey support for 88PM80X PMIC
mfd: Add support for twl6041
mfd: Fix twl6040 revision information
mfd: Matches should be NULL when populate anatop child devices
input: ab8500-ponkey: Create AB8500 domain IRQ mapping
mfd: Add missing out of memory check for pcf50633
Documentation: Describe the AB8500 Device Tree bindings
mfd: Add tps65910 32-kHz-crystal-input init
mfd: Drop modifying mc13xxx driver's id_table in probe
...
Diffstat (limited to 'arch/arm/mach-ux500')
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 30 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-ux500/include/mach/setup.h | 3 |
3 files changed, 10 insertions, 30 deletions
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 8f421c0ca45c..8674a890fd1c 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -211,24 +211,6 @@ static struct ab8500_platform_data ab8500_platdata = { | |||
211 | .codec = &ab8500_codec_pdata, | 211 | .codec = &ab8500_codec_pdata, |
212 | }; | 212 | }; |
213 | 213 | ||
214 | static struct resource ab8500_resources[] = { | ||
215 | [0] = { | ||
216 | .start = IRQ_DB8500_AB8500, | ||
217 | .end = IRQ_DB8500_AB8500, | ||
218 | .flags = IORESOURCE_IRQ | ||
219 | } | ||
220 | }; | ||
221 | |||
222 | struct platform_device ab8500_device = { | ||
223 | .name = "ab8500-core", | ||
224 | .id = 0, | ||
225 | .dev = { | ||
226 | .platform_data = &ab8500_platdata, | ||
227 | }, | ||
228 | .num_resources = 1, | ||
229 | .resource = ab8500_resources, | ||
230 | }; | ||
231 | |||
232 | /* | 214 | /* |
233 | * TPS61052 | 215 | * TPS61052 |
234 | */ | 216 | */ |
@@ -443,7 +425,6 @@ static struct hash_platform_data u8500_hash1_platform_data = { | |||
443 | /* add any platform devices here - TODO */ | 425 | /* add any platform devices here - TODO */ |
444 | static struct platform_device *mop500_platform_devs[] __initdata = { | 426 | static struct platform_device *mop500_platform_devs[] __initdata = { |
445 | &mop500_gpio_keys_device, | 427 | &mop500_gpio_keys_device, |
446 | &ab8500_device, | ||
447 | }; | 428 | }; |
448 | 429 | ||
449 | #ifdef CONFIG_STE_DMA40 | 430 | #ifdef CONFIG_STE_DMA40 |
@@ -605,7 +586,6 @@ static struct platform_device *snowball_platform_devs[] __initdata = { | |||
605 | &snowball_led_dev, | 586 | &snowball_led_dev, |
606 | &snowball_key_dev, | 587 | &snowball_key_dev, |
607 | &snowball_sbnet_dev, | 588 | &snowball_sbnet_dev, |
608 | &ab8500_device, | ||
609 | }; | 589 | }; |
610 | 590 | ||
611 | static void __init mop500_init_machine(void) | 591 | static void __init mop500_init_machine(void) |
@@ -617,9 +597,8 @@ static void __init mop500_init_machine(void) | |||
617 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; | 597 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; |
618 | 598 | ||
619 | mop500_pinmaps_init(); | 599 | mop500_pinmaps_init(); |
620 | parent = u8500_init_devices(); | 600 | parent = u8500_init_devices(&ab8500_platdata); |
621 | 601 | ||
622 | /* FIXME: parent of ab8500 should be prcmu */ | ||
623 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 602 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
624 | mop500_platform_devs[i]->dev.parent = parent; | 603 | mop500_platform_devs[i]->dev.parent = parent; |
625 | 604 | ||
@@ -652,7 +631,7 @@ static void __init snowball_init_machine(void) | |||
652 | int i; | 631 | int i; |
653 | 632 | ||
654 | snowball_pinmaps_init(); | 633 | snowball_pinmaps_init(); |
655 | parent = u8500_init_devices(); | 634 | parent = u8500_init_devices(&ab8500_platdata); |
656 | 635 | ||
657 | for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++) | 636 | for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++) |
658 | snowball_platform_devs[i]->dev.parent = parent; | 637 | snowball_platform_devs[i]->dev.parent = parent; |
@@ -684,7 +663,7 @@ static void __init hrefv60_init_machine(void) | |||
684 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; | 663 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; |
685 | 664 | ||
686 | hrefv60_pinmaps_init(); | 665 | hrefv60_pinmaps_init(); |
687 | parent = u8500_init_devices(); | 666 | parent = u8500_init_devices(&ab8500_platdata); |
688 | 667 | ||
689 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 668 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
690 | mop500_platform_devs[i]->dev.parent = parent; | 669 | mop500_platform_devs[i]->dev.parent = parent; |
@@ -785,9 +764,6 @@ static const struct of_device_id u8500_local_bus_nodes[] = { | |||
785 | /* only create devices below soc node */ | 764 | /* only create devices below soc node */ |
786 | { .compatible = "stericsson,db8500", }, | 765 | { .compatible = "stericsson,db8500", }, |
787 | { .compatible = "stericsson,db8500-prcmu", }, | 766 | { .compatible = "stericsson,db8500-prcmu", }, |
788 | { .compatible = "stericsson,db8500-prcmu-regulator", }, | ||
789 | { .compatible = "stericsson,ab8500", }, | ||
790 | { .compatible = "stericsson,ab8500-regulator", }, | ||
791 | { .compatible = "simple-bus"}, | 767 | { .compatible = "simple-bus"}, |
792 | { }, | 768 | { }, |
793 | }; | 769 | }; |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index c8dd94f606dc..db3c52d56ca4 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/mfd/abx500/ab8500.h> | ||
19 | 20 | ||
20 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
21 | #include <asm/pmu.h> | 22 | #include <asm/pmu.h> |
@@ -115,7 +116,7 @@ static irqreturn_t db8500_pmu_handler(int irq, void *dev, irq_handler_t handler) | |||
115 | return ret; | 116 | return ret; |
116 | } | 117 | } |
117 | 118 | ||
118 | static struct arm_pmu_platdata db8500_pmu_platdata = { | 119 | struct arm_pmu_platdata db8500_pmu_platdata = { |
119 | .handle_irq = db8500_pmu_handler, | 120 | .handle_irq = db8500_pmu_handler, |
120 | }; | 121 | }; |
121 | 122 | ||
@@ -206,7 +207,7 @@ static struct device * __init db8500_soc_device_init(void) | |||
206 | /* | 207 | /* |
207 | * This function is called from the board init | 208 | * This function is called from the board init |
208 | */ | 209 | */ |
209 | struct device * __init u8500_init_devices(void) | 210 | struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) |
210 | { | 211 | { |
211 | struct device *parent; | 212 | struct device *parent; |
212 | int i; | 213 | int i; |
@@ -223,6 +224,8 @@ struct device * __init u8500_init_devices(void) | |||
223 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | 224 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) |
224 | platform_devs[i]->dev.parent = parent; | 225 | platform_devs[i]->dev.parent = parent; |
225 | 226 | ||
227 | db8500_prcmu_device.dev.platform_data = ab8500; | ||
228 | |||
226 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | 229 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); |
227 | 230 | ||
228 | return parent; | 231 | return parent; |
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h index 8b7ed82a2866..7914e5eaa9c7 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/include/mach/setup.h | |||
@@ -13,11 +13,12 @@ | |||
13 | 13 | ||
14 | #include <asm/mach/time.h> | 14 | #include <asm/mach/time.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/mfd/abx500/ab8500.h> | ||
16 | 17 | ||
17 | void __init ux500_map_io(void); | 18 | void __init ux500_map_io(void); |
18 | extern void __init u8500_map_io(void); | 19 | extern void __init u8500_map_io(void); |
19 | 20 | ||
20 | extern struct device * __init u8500_init_devices(void); | 21 | extern struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500); |
21 | 22 | ||
22 | extern void __init ux500_init_irq(void); | 23 | extern void __init ux500_init_irq(void); |
23 | extern void __init ux500_init_late(void); | 24 | extern void __init ux500_init_late(void); |