]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
ARM: ux500: combine the board init functions for DT boot
authorArnd Bergmann <arnd@arndb.de>
Fri, 2 Mar 2012 22:25:02 +0000 (22:25 +0000)
committerArnd Bergmann <arnd@arndb.de>
Fri, 16 Mar 2012 19:46:12 +0000 (19:46 +0000)
This lets us move over evertything to device tree one by one.

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

index 0fb5dfd2ce54ebab477b77c9810fc520a41e5ee5..e2932fcba75ea06ec0f032e7abc7bf8b5107af85 100644 (file)
@@ -745,12 +745,57 @@ MACHINE_END
 #ifdef CONFIG_MACH_UX500_DT
 static void __init u8500_init_machine(void)
 {
-       if (of_machine_is_compatible("calaosystems,snowball-a9500"))
-               return snowball_init_machine();
-       else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
-               return hrefv60_init_machine();
-       else if (of_machine_is_compatible("st-ericsson,mop500"))
-               return mop500_init_machine();
+       struct device *parent = NULL;
+       int i2c0_devs;
+       int i;
+
+       parent = u8500_init_devices();
+       i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
+
+       for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
+               mop500_platform_devs[i]->dev.parent = parent;
+       for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++)
+               snowball_platform_devs[i]->dev.parent = parent;
+
+
+       if (of_machine_is_compatible("st-ericsson,mop500")) {
+               mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
+               mop500_pins_init();
+
+               platform_add_devices(mop500_platform_devs,
+                               ARRAY_SIZE(mop500_platform_devs));
+
+               mop500_sdi_init(parent);
+       } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
+               snowball_pins_init();
+               platform_add_devices(snowball_platform_devs,
+                               ARRAY_SIZE(snowball_platform_devs));
+
+               snowball_sdi_init(parent);
+       } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
+               /*
+                * The HREFv60 board removed a GPIO expander and routed
+                * all these GPIO pins to the internal GPIO controller
+                * instead.
+                */
+               mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO;
+               i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
+               hrefv60_pins_init();
+               platform_add_devices(mop500_platform_devs,
+                               ARRAY_SIZE(mop500_platform_devs));
+
+               hrefv60_sdi_init(parent);
+       }
+       mop500_i2c_init(parent);
+       mop500_spi_init(parent);
+       mop500_uart_init(parent);
+
+       i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
+       i2c_register_board_info(2, mop500_i2c2_devices,
+                               ARRAY_SIZE(mop500_i2c2_devices));
+
+       /* This board has full regulator constraints */
+       regulator_has_full_constraints();
 }
 
 static const char * u8500_dt_board_compat[] = {