From 8dda41150166a7310531475a713316aa0c76e668 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 14 May 2010 19:30:34 -0700 Subject: [PATCH] [ARM] tegra: harmony: Make board init calls explicit Signed-off-by: Colin Cross Change-Id: Ic14e8db00f2272de2f4ee4013bb3ab5c1951e7fe --- arch/arm/mach-tegra/board-harmony-panel.c | 15 +--- arch/arm/mach-tegra/board-harmony-pinmux.c | 11 +-- arch/arm/mach-tegra/board-harmony-sdhci.c | 82 +--------------------- arch/arm/mach-tegra/board-harmony.c | 12 ++++ arch/arm/mach-tegra/board-harmony.h | 2 + 5 files changed, 25 insertions(+), 97 deletions(-) diff --git a/arch/arm/mach-tegra/board-harmony-panel.c b/arch/arm/mach-tegra/board-harmony-panel.c index 9fbdacbcded1..309d72e4b490 100644 --- a/arch/arm/mach-tegra/board-harmony-panel.c +++ b/arch/arm/mach-tegra/board-harmony-panel.c @@ -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); - diff --git a/arch/arm/mach-tegra/board-harmony-pinmux.c b/arch/arm/mach-tegra/board-harmony-pinmux.c index 50b15d500cac..78980e48970f 100644 --- a/arch/arm/mach-tegra/board-harmony-pinmux.c +++ b/arch/arm/mach-tegra/board-harmony-pinmux.c @@ -15,11 +15,12 @@ */ #include +#include #include #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)); } diff --git a/arch/arm/mach-tegra/board-harmony-sdhci.c b/arch/arm/mach-tegra/board-harmony-sdhci.c index 7ad3715b551f..fb11cdf889ed 100644 --- a/arch/arm/mach-tegra/board-harmony-sdhci.c +++ b/arch/arm/mach-tegra/board-harmony-sdhci.c @@ -27,19 +27,6 @@ #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); - diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index d3ab5a8664ae..ab9273c1364b 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c @@ -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") diff --git a/arch/arm/mach-tegra/board-harmony.h b/arch/arm/mach-tegra/board-harmony.h index 09ca7755dd55..3b2c469206cc 100644 --- a/arch/arm/mach-tegra/board-harmony.h +++ b/arch/arm/mach-tegra/board-harmony.h @@ -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 -- 2.34.1