ARM: imx: call mxc_device_init() in soc specific function
authorShawn Guo <shawn.guo@linaro.org>
Thu, 20 Sep 2012 06:21:16 +0000 (14:21 +0800)
committerShawn Guo <shawn.guo@linaro.org>
Mon, 15 Oct 2012 02:05:43 +0000 (10:05 +0800)
mxc_device_init() is a core_initcall function used to register devices
for mxc_aips_bus and mxc_ahb_bus, which are needed by gpio and dma
device registration.

Instead of being a core_initcall function, we have it called in soc
specific initialization function before gpio and dma devices get
registered, so that it will not be called for other platforms when
we enable multi-platform support for imx.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
arch/arm/mach-imx/common.h
arch/arm/mach-imx/devices/devices.c
arch/arm/mach-imx/mm-imx21.c
arch/arm/mach-imx/mm-imx25.c
arch/arm/mach-imx/mm-imx27.c
arch/arm/mach-imx/mm-imx3.c
arch/arm/mach-imx/mm-imx5.c

index ead901814c0d86395047420b14deda478540afda..ef8db6b348419e9c6d75a9b9ca837e854803c132 100644 (file)
@@ -79,6 +79,7 @@ extern void mxc_arch_reset_init(void __iomem *);
 extern int mx53_revision(void);
 extern int mx53_display_revision(void);
 extern void imx_set_aips(void __iomem *);
+extern int mxc_device_init(void);
 
 enum mxc_cpu_pwr_mode {
        WAIT_CLOCKED,           /* wfi only */
index 9301e07b6125c03e83fa6101da6d135619a4375e..1b37482407f911461846fc95f0528a1ed2fc6b70 100644 (file)
@@ -32,7 +32,7 @@ struct device mxc_ahb_bus = {
        .parent         = &platform_bus,
 };
 
-static int __init mxc_device_init(void)
+int __init mxc_device_init(void)
 {
        int ret;
 
@@ -45,4 +45,3 @@ static int __init mxc_device_init(void)
 done:
        return ret;
 }
-core_initcall(mxc_device_init);
index 8868398737c14e7dc4d9b8e541c76d2eb2807771..d8ccd3a8ec531bec988e6a90353148983d8d7713 100644 (file)
@@ -82,6 +82,8 @@ static const struct resource imx21_audmux_res[] __initconst = {
 
 void __init imx21_soc_init(void)
 {
+       mxc_device_init();
+
        mxc_register_gpio("imx21-gpio", 0, MX21_GPIO1_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
        mxc_register_gpio("imx21-gpio", 1, MX21_GPIO2_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
        mxc_register_gpio("imx21-gpio", 2, MX21_GPIO3_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
index 9be33cda2e2dac5f7f1b4cf7df81b84d838ca799..9357707bb7afc4fa5bbb586fcf1ac6fcb8a9bfc0 100644 (file)
@@ -89,6 +89,8 @@ static const struct resource imx25_audmux_res[] __initconst = {
 
 void __init imx25_soc_init(void)
 {
+       mxc_device_init();
+
        /* i.mx25 has the i.mx35 type gpio */
        mxc_register_gpio("imx35-gpio", 0, MX25_GPIO1_BASE_ADDR, SZ_16K, MX25_INT_GPIO1, 0);
        mxc_register_gpio("imx35-gpio", 1, MX25_GPIO2_BASE_ADDR, SZ_16K, MX25_INT_GPIO2, 0);
index ecaa5b96d6fc09e1460b86498d27a213e008679d..4f1be65a7b5fe62a6531a09d70aa623283086d6b 100644 (file)
@@ -82,6 +82,8 @@ static const struct resource imx27_audmux_res[] __initconst = {
 
 void __init imx27_soc_init(void)
 {
+       mxc_device_init();
+
        /* i.mx27 has the i.mx21 type gpio */
        mxc_register_gpio("imx21-gpio", 0, MX27_GPIO1_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
        mxc_register_gpio("imx21-gpio", 1, MX27_GPIO2_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
index 072b3bf4927b71f2689dc9e909c5393823003da6..f718bf5e964ab41e08a7f0616b8e9b73a2c83ff0 100644 (file)
@@ -175,6 +175,8 @@ void __init imx31_soc_init(void)
 
        imx3_init_l2x0();
 
+       mxc_device_init();
+
        mxc_register_gpio("imx31-gpio", 0, MX31_GPIO1_BASE_ADDR, SZ_16K, MX31_INT_GPIO1, 0);
        mxc_register_gpio("imx31-gpio", 1, MX31_GPIO2_BASE_ADDR, SZ_16K, MX31_INT_GPIO2, 0);
        mxc_register_gpio("imx31-gpio", 2, MX31_GPIO3_BASE_ADDR, SZ_16K, MX31_INT_GPIO3, 0);
@@ -271,6 +273,8 @@ void __init imx35_soc_init(void)
 
        imx3_init_l2x0();
 
+       mxc_device_init();
+
        mxc_register_gpio("imx35-gpio", 0, MX35_GPIO1_BASE_ADDR, SZ_16K, MX35_INT_GPIO1, 0);
        mxc_register_gpio("imx35-gpio", 1, MX35_GPIO2_BASE_ADDR, SZ_16K, MX35_INT_GPIO2, 0);
        mxc_register_gpio("imx35-gpio", 2, MX35_GPIO3_BASE_ADDR, SZ_16K, MX35_INT_GPIO3, 0);
index e7395535f6b0721d83cc7900eadcff73534d9e6f..f92caf1b30bacc5a86bd05ba1320e01eaafed014 100644 (file)
@@ -138,6 +138,8 @@ static const struct resource imx51_audmux_res[] __initconst = {
 
 void __init imx50_soc_init(void)
 {
+       mxc_device_init();
+
        /* i.mx50 has the i.mx35 type gpio */
        mxc_register_gpio("imx35-gpio", 0, MX50_GPIO1_BASE_ADDR, SZ_16K, MX50_INT_GPIO1_LOW, MX50_INT_GPIO1_HIGH);
        mxc_register_gpio("imx35-gpio", 1, MX50_GPIO2_BASE_ADDR, SZ_16K, MX50_INT_GPIO2_LOW, MX50_INT_GPIO2_HIGH);
@@ -153,6 +155,8 @@ void __init imx50_soc_init(void)
 
 void __init imx51_soc_init(void)
 {
+       mxc_device_init();
+
        /* i.mx51 has the i.mx35 type gpio */
        mxc_register_gpio("imx35-gpio", 0, MX51_GPIO1_BASE_ADDR, SZ_16K, MX51_INT_GPIO1_LOW, MX51_INT_GPIO1_HIGH);
        mxc_register_gpio("imx35-gpio", 1, MX51_GPIO2_BASE_ADDR, SZ_16K, MX51_INT_GPIO2_LOW, MX51_INT_GPIO2_HIGH);