]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ARM: ux500: New DT:ed u8500_init_devices for one-by-one device enablement
authorLee Jones <lee.jones@linaro.org>
Tue, 29 May 2012 02:03:09 +0000 (10:03 +0800)
committerArnd Bergmann <arnd@arndb.de>
Fri, 1 Jun 2012 00:03:58 +0000 (02:03 +0200)
During Device Tree enablement it is necessary to remove
<hw_component>_add_<device> calls one at at time, as and when particular
devices are DT enabled. This patch provides a temporary solution. Once
the new *of_init_devices function has been fully unpopulated it will be
removed again.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/board-mop500.h
arch/arm/mach-ux500/cpu-db8500.c

index d1bd2bac22f0aaaea4bbda8ff0a4e5562ec2f516..1718462622c5ff835de3c0a499ce03fed23ba4b0 100644 (file)
@@ -859,7 +859,7 @@ static void __init u8500_init_machine(void)
        else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
                hrefv60_pinmaps_init();
 
-       parent = u8500_init_devices();
+       parent = u8500_of_init_devices();
 
        for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
                mop500_platform_devs[i]->dev.parent = parent;
index bc44c07c71a99a6fcf4f66ba7b3193f1ac0dc911..3be0cb8f8914df84968fd9db31a1a1ae50309d6d 100644 (file)
@@ -92,4 +92,7 @@ void __init hrefv60_pinmaps_init(void);
 void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
                unsigned n);
 
+/* TODO: Once all pieces are DT:ed, remove completely. */
+struct device * __init u8500_of_init_devices(void);
+
 #endif
index 16169c4bf6ca5226b748bee3d50d6f6b76f8138e..04244b081a479d0440502092e13f156847494c01 100644 (file)
@@ -219,6 +219,28 @@ struct device * __init u8500_init_devices(void)
        db8500_add_gpios(parent);
        db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
 
+       platform_device_register_data(parent,
+               "cpufreq-u8500", -1, NULL, 0);
+
+       for (i = 0; i < ARRAY_SIZE(platform_devs); i++)
+               platform_devs[i]->dev.parent = parent;
+
+       platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
+
+       return parent;
+}
+
+/* TODO: Once all pieces are DT:ed, remove completely. */
+struct device * __init u8500_of_init_devices(void)
+{
+       struct device *parent;
+       int i;
+
+       parent = db8500_soc_device_init();
+
+       db8500_add_rtc(parent);
+       db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
+
        platform_device_register_data(parent,
                "cpufreq-u8500", -1, NULL, 0);