ARM: OMAP: Fix i2c cmdline initcall for multiplatform
authorTony Lindgren <tony@atomide.com>
Fri, 11 Jan 2013 19:24:19 +0000 (11:24 -0800)
committerTony Lindgren <tony@atomide.com>
Fri, 11 Jan 2013 19:24:19 +0000 (11:24 -0800)
We only want this initcall to run when the kernel is
booted on omap SoCs. Fix the issue by initializing the
the initcall from separately for omap1 and omap2+.

This fixes the issue for omap2+ multiplatform configs
as we are using omap_subsys_initcall there.

Tested-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap1/i2c.c
arch/arm/mach-omap2/i2c.c
arch/arm/plat-omap/i2c.c
arch/arm/plat-omap/include/plat/i2c.h

index faca808..7f5761c 100644 (file)
@@ -91,3 +91,9 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *pdata,
 
        return platform_device_register(pdev);
 }
+
+static  int __init omap_i2c_cmdline(void)
+{
+       return omap_register_i2c_bus_cmdline();
+}
+subsys_initcall(omap_i2c_cmdline);
index b9074dd..8fd9857 100644 (file)
@@ -185,3 +185,8 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata,
        return PTR_RET(pdev);
 }
 
+static  int __init omap_i2c_cmdline(void)
+{
+       return omap_register_i2c_bus_cmdline();
+}
+omap_subsys_initcall(omap_i2c_cmdline);
index f9df624..58213d9 100644 (file)
@@ -68,7 +68,7 @@ __setup("i2c_bus=", omap_i2c_bus_setup);
  * Register busses defined in command line but that are not registered with
  * omap_register_i2c_bus from board initialization code.
  */
-static int __init omap_register_i2c_bus_cmdline(void)
+int __init omap_register_i2c_bus_cmdline(void)
 {
        int i, err = 0;
 
@@ -83,7 +83,6 @@ static int __init omap_register_i2c_bus_cmdline(void)
 out:
        return err;
 }
-subsys_initcall(omap_register_i2c_bus_cmdline);
 
 /**
  * omap_register_i2c_bus - register I2C bus with device descriptors
index 7a9028c..810629d 100644 (file)
@@ -32,6 +32,7 @@ int omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata,
 extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
                                 struct i2c_board_info const *info,
                                 unsigned len);
+extern int omap_register_i2c_bus_cmdline(void);
 #else
 static inline int omap_register_i2c_bus(int bus_id, u32 clkrate,
                                 struct i2c_board_info const *info,
@@ -39,6 +40,11 @@ static inline int omap_register_i2c_bus(int bus_id, u32 clkrate,
 {
        return 0;
 }
+
+static inline int omap_register_i2c_bus_cmdline(void)
+{
+       return 0;
+}
 #endif
 
 struct omap_hwmod;