]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/mach-ux500/board-mop500.c
ARM: ux500: Do not attempt to register non-existent i2c devices on Snowball
[karo-tx-linux.git] / arch / arm / mach-ux500 / board-mop500.c
index 77d03c1fbd04551982dd97dcf055ef520ca664ea..b885f271e04a9b70bd6a6a55102a3e2ed0d5f9ec 100644 (file)
@@ -646,7 +646,6 @@ static void __init mop500_init_machine(void)
 static void __init snowball_init_machine(void)
 {
        struct device *parent = NULL;
-       int i2c0_devs;
        int i;
 
        parent = u8500_init_devices();
@@ -664,11 +663,6 @@ static void __init snowball_init_machine(void)
        mop500_spi_init(parent);
        mop500_uart_init(parent);
 
-       i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
-       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();
 }
@@ -753,9 +747,10 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
        {},
 };
 
-static const struct of_device_id u8500_soc_node[] = {
+static const struct of_device_id u8500_local_bus_nodes[] = {
        /* only create devices below soc node */
        { .compatible = "stericsson,db8500", },
+       { .compatible = "simple-bus"},
        { },
 };
 
@@ -766,7 +761,6 @@ static void __init u8500_init_machine(void)
        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;
@@ -774,7 +768,7 @@ static void __init u8500_init_machine(void)
                snowball_platform_devs[i]->dev.parent = parent;
 
        /* automatically probe child nodes of db8500 device */
-       of_platform_populate(NULL, u8500_soc_node, u8500_auxdata_lookup, parent);
+       of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
 
        if (of_machine_is_compatible("st-ericsson,mop500")) {
                mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
@@ -784,6 +778,12 @@ static void __init u8500_init_machine(void)
                                ARRAY_SIZE(mop500_platform_devs));
 
                mop500_sdi_init(parent);
+
+               i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
+               i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
+               i2c_register_board_info(2, mop500_i2c2_devices,
+                                       ARRAY_SIZE(mop500_i2c2_devices));
+
        } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
                snowball_pins_init();
                platform_add_devices(snowball_platform_devs,
@@ -797,19 +797,21 @@ static void __init u8500_init_machine(void)
                 * 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);
+
+               i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
+               i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
+
+               i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
+               i2c_register_board_info(2, mop500_i2c2_devices,
+                                       ARRAY_SIZE(mop500_i2c2_devices));
        }
        mop500_i2c_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();
 }