[ARM] tegra: harmony: Make board init calls explicit
authorColin Cross <ccross@android.com>
Sat, 15 May 2010 02:30:34 +0000 (19:30 -0700)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:27:06 +0000 (16:27 -0700)
Signed-off-by: Colin Cross <ccross@android.com>
Change-Id: Ic14e8db00f2272de2f4ee4013bb3ab5c1951e7fe

arch/arm/mach-tegra/board-harmony-panel.c
arch/arm/mach-tegra/board-harmony-pinmux.c
arch/arm/mach-tegra/board-harmony-sdhci.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-harmony.h

index 9fbdacbcded131771384be2d7332640715f9ee28..309d72e4b49093b1db9cefc937e1bc6dad460b22 100644 (file)
@@ -58,18 +58,7 @@ static struct platform_device tegra_fb_device = {
        },
 };
 
-static int __init harmony_init_panel(void) {
-       int ret;
-
-       if (!machine_is_harmony())
-               return 0;
-
-       ret = platform_device_register(&tegra_fb_device);
-       if (ret != 0)
-               return ret;
-
-       return 0;
+int __init harmony_panel_init(void) {
+       return platform_device_register(&tegra_fb_device);
 }
 
-device_initcall(harmony_init_panel);
-
index 50b15d500cacc73817258202178b0b79fc42478b..78980e48970f1cf625df5f6dccbf177e86c24bd2 100644 (file)
  */
 
 #include <linux/kernel.h>
+#include <linux/init.h>
 #include <mach/pinmux.h>
 
 #include "board-harmony.h"
 
-static struct tegra_pingroup_config harmony_pinmux[] = {
+static __initdata struct tegra_pingroup_config harmony_pinmux[] = {
        {TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_ATC,   TEGRA_MUX_NAND,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
@@ -34,10 +35,10 @@ static struct tegra_pingroup_config harmony_pinmux[] = {
        {TEGRA_PINGROUP_DAP3,  TEGRA_MUX_DAP3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_DAP4,  TEGRA_MUX_DAP4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_DDC,   TEGRA_MUX_I2C2,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-       {TEGRA_PINGROUP_DTA,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-       {TEGRA_PINGROUP_DTB,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+       {TEGRA_PINGROUP_DTA,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
+       {TEGRA_PINGROUP_DTB,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_DTC,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-       {TEGRA_PINGROUP_DTD,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
+       {TEGRA_PINGROUP_DTD,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_DTE,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_DTF,   TEGRA_MUX_I2C3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_GMA,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
@@ -138,7 +139,7 @@ static struct tegra_pingroup_config harmony_pinmux[] = {
        {TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
 };
 
-void harmony_pinmux_init(void)
+void __init harmony_pinmux_init(void)
 {
        tegra_pinmux_config_table(harmony_pinmux, ARRAY_SIZE(harmony_pinmux));
 }
index 7ad3715b551fd4afcefdf493107f8c43e2c5ca73..fb11cdf889ed5aa3cb48c46309eb8f695bea6fd5 100644 (file)
 
 #include "gpio-names.h"
 
-/*static struct resource sdhci_resource1[] = {
-       [0] = {
-               .start  = INT_SDMMC1,
-               .end    = INT_SDMMC1,
-               .flags  = IORESOURCE_IRQ,
-       },
-       [1] = {
-               .start  = TEGRA_SDMMC1_BASE,
-               .end    = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
-               .flags  = IORESOURCE_MEM,
-       },
-};*/
-
 static struct resource sdhci_resource2[] = {
        [0] = {
                .start  = INT_SDMMC2,
@@ -53,19 +40,6 @@ static struct resource sdhci_resource2[] = {
        },
 };
 
-/*static struct resource sdhci_resource3[] = {
-       [0] = {
-               .start  = INT_SDMMC3,
-               .end    = INT_SDMMC3,
-               .flags  = IORESOURCE_IRQ,
-       },
-       [1] = {
-               .start  = TEGRA_SDMMC3_BASE,
-               .end    = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
-               .flags  = IORESOURCE_MEM,
-       },
-};*/
-
 static struct resource sdhci_resource4[] = {
        [0] = {
                .start  = INT_SDMMC4,
@@ -79,11 +53,6 @@ static struct resource sdhci_resource4[] = {
        },
 };
 
-/*static struct tegra_sdhci_platform_data tegra_sdhci_platform_data1 = {
-       .clk_id = NULL,
-       .force_hs = 0,
-};*/
-
 static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
        .clk_id = NULL,
        .force_hs = 1,
@@ -92,11 +61,6 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
        .power_gpio = TEGRA_GPIO_PT3,
 };
 
-/*static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
-       .clk_id = NULL,
-       .force_hs = 0,
-};*/
-
 static struct tegra_sdhci_platform_data tegra_sdhci_platform_data4 = {
        .clk_id = NULL,
        .force_hs = 0,
@@ -105,16 +69,6 @@ static struct tegra_sdhci_platform_data tegra_sdhci_platform_data4 = {
        .power_gpio = TEGRA_GPIO_PI6,
 };
 
-/*static struct platform_device tegra_sdhci_device1 = {
-       .name           = "sdhci-tegra",
-       .id             = 0,
-       .resource       = sdhci_resource1,
-       .num_resources  = ARRAY_SIZE(sdhci_resource1),
-       .dev = {
-               .platform_data = &tegra_sdhci_platform_data1,
-       },
-};*/
-
 static struct platform_device tegra_sdhci_device2 = {
        .name           = "sdhci-tegra",
        .id             = 1,
@@ -125,16 +79,6 @@ static struct platform_device tegra_sdhci_device2 = {
        },
 };
 
-/*static struct platform_device tegra_sdhci_device3 = {
-       .name           = "sdhci-tegra",
-       .id             = 2,
-       .resource       = sdhci_resource3,
-       .num_resources  = ARRAY_SIZE(sdhci_resource3),
-       .dev = {
-               .platform_data = &tegra_sdhci_platform_data3,
-       },
-};*/
-
 static struct platform_device tegra_sdhci_device4 = {
        .name           = "sdhci-tegra",
        .id             = 3,
@@ -145,21 +89,8 @@ static struct platform_device tegra_sdhci_device4 = {
        },
 };
 
-static int __init harmony_init_sdhci(void)
+int __init harmony_sdhci_init(void)
 {
-       int ret;
-
-       if (!machine_is_harmony())
-               return 0;
-
-       tegra_pinmux_set_tristate(TEGRA_PINGROUP_DTA, TEGRA_TRI_NORMAL);
-       tegra_pinmux_set_tristate(TEGRA_PINGROUP_DTB, TEGRA_TRI_NORMAL);
-       tegra_pinmux_set_tristate(TEGRA_PINGROUP_DTD, TEGRA_TRI_NORMAL);
-
-       tegra_pinmux_set_tristate(TEGRA_PINGROUP_GMA, TEGRA_TRI_NORMAL);
-       tegra_pinmux_set_tristate(TEGRA_PINGROUP_GMB, TEGRA_TRI_NORMAL);
-       tegra_pinmux_set_tristate(TEGRA_PINGROUP_ATB, TEGRA_TRI_NORMAL);
-
        gpio_request(tegra_sdhci_platform_data2.power_gpio, "sdhci2_power");
        gpio_request(tegra_sdhci_platform_data2.cd_gpio, "sdhci2_cd");
        gpio_request(tegra_sdhci_platform_data2.wp_gpio, "sdhci2_wp");
@@ -179,15 +110,8 @@ static int __init harmony_init_sdhci(void)
        gpio_direction_output(tegra_sdhci_platform_data2.power_gpio, 1);
        gpio_direction_output(tegra_sdhci_platform_data4.power_gpio, 1);
 
-       /*ret = platform_device_register(&tegra_sdhci_device1);*/
-       ret = platform_device_register(&tegra_sdhci_device2);
-       /*ret = platform_device_register(&tegra_sdhci_device3);*/
-       ret = platform_device_register(&tegra_sdhci_device4);
-       if (ret != 0)
-               return ret;
+       platform_device_register(&tegra_sdhci_device2);
+       platform_device_register(&tegra_sdhci_device4);
 
        return 0;
 }
-
-device_initcall(harmony_init_sdhci);
-
index d3ab5a8664ae9df1d7d286c7168128a9b46f9343..ab9273c1364ba844c1dab6dcd6f15cf9a329c637 100644 (file)
@@ -38,6 +38,7 @@
 #include "board.h"
 #include "board-harmony.h"
 #include "clock.h"
+#include "devices.h"
 
 /* NVidia bootloader tags */
 #define ATAG_NVIDIA            0x41000801
@@ -251,6 +252,14 @@ static struct platform_device *harmony_devices[] __initdata = {
        &tegra_nand_device,
        &tegra_otg,
        &pda_power_device,
+       &tegra_i2c_device1,
+       &tegra_i2c_device2,
+       &tegra_i2c_device3,
+       &tegra_i2c_device4,
+       &tegra_spi_device1,
+       &tegra_spi_device2,
+       &tegra_spi_device3,
+       &tegra_spi_device4,
 };
 
 static void __init tegra_harmony_fixup(struct machine_desc *desc,
@@ -278,6 +287,9 @@ static void __init tegra_harmony_init(void)
        harmony_pinmux_init();
 
        platform_add_devices(harmony_devices, ARRAY_SIZE(harmony_devices));
+
+       harmony_panel_init();
+       harmony_sdhci_init();
 }
 
 MACHINE_START(HARMONY, "harmony")
index 09ca7755dd5558b966833be98ea75c18e5b6efd0..3b2c469206cc679a6e3c7b64692af84cf1a61da0 100644 (file)
@@ -18,5 +18,7 @@
 #define _MACH_TEGRA_BOARD_HARMONY_H
 
 void harmony_pinmux_init(void);
+int harmony_panel_init(void);
+int harmony_sdhci_init(void);
 
 #endif