[ARM] tegra: olympus: Make board init calls explicit
authorColin Cross <ccross@android.com>
Thu, 13 May 2010 23:43:26 +0000 (16:43 -0700)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:32:54 +0000 (16:32 -0700)
Signed-off-by: Colin Cross <ccross@android.com>
Change-Id: I1ca16a8cf76f324937e47ce057123d2f28fd20b8

arch/arm/mach-tegra/board-olympus-i2c.c
arch/arm/mach-tegra/board-olympus-keypad.c
arch/arm/mach-tegra/board-olympus-panel.c
arch/arm/mach-tegra/board-olympus-pinmux.c
arch/arm/mach-tegra/board-olympus-wifi.c
arch/arm/mach-tegra/board-olympus.c
arch/arm/mach-tegra/board-olympus.h

index e43c0b3ce8c28c249c8bb3e089bb04df4386e79b..aadc11a3e952c82d0c64933f4366e57783dce603 100644 (file)
@@ -26,6 +26,8 @@
 #include <linux/qtouch_obp_ts.h>
 #include <linux/interrupt.h>
 #include <linux/input.h>
+
+#include "board-olympus.h"
 #include "gpio-names.h"
 
 #define OLYMPUS_TOUCH_IRQ_GPIO TEGRA_GPIO_PF5
@@ -202,11 +204,8 @@ static struct i2c_board_info __initdata olympus_i2c_bus4_board_info[] = {
         },
 };
 
-static int __init olympus_init_i2c(void)
+void __init olympus_i2c_init(void)
 {
-       if (!machine_is_olympus())
-               return 0;
-
        tegra_gpio_enable(OLYMPUS_TOUCH_IRQ_GPIO);
        gpio_request(OLYMPUS_TOUCH_IRQ_GPIO, "touch_irq");
        gpio_direction_input(OLYMPUS_TOUCH_IRQ_GPIO);
@@ -214,9 +213,5 @@ static int __init olympus_init_i2c(void)
        i2c_register_board_info(0, sholes_i2c_bus1_board_info, 1);
 
        i2c_register_board_info(3, olympus_i2c_bus4_board_info, 1);
-
-       return 0;
 }
 
-device_initcall(olympus_init_i2c);
-
index 4ade18565090823ba825c28186d0e042b57a062e..9271c84c524fc99ed984cba543912049f7bac99a 100644 (file)
 #include <linux/gpio_event.h>
 #include <linux/keyreset.h>
 #include <linux/gpio.h>
+#include <asm/mach-types.h>
 #include "gpio-names.h"
 
-static unsigned int tegra_row_gpios[] = {
+static unsigned int olympus_row_gpios[] = {
        TEGRA_GPIO_PR0,
        TEGRA_GPIO_PR1,
        TEGRA_GPIO_PR2
 };
-static unsigned int tegra_col_gpios[] = {
+static unsigned int olympus_col_gpios[] = {
        TEGRA_GPIO_PQ0,
        TEGRA_GPIO_PQ1,
        TEGRA_GPIO_PQ2
 };
 
-#define KEYMAP_INDEX(col, row) ((col)*ARRAY_SIZE(tegra_row_gpios) + (row))
+#define KEYMAP_INDEX(col, row) ((col)*ARRAY_SIZE(olympus_row_gpios) + (row))
 
-static const unsigned short tegra_p3_keymap[ARRAY_SIZE(tegra_col_gpios) *
-                                            ARRAY_SIZE(tegra_row_gpios)] = {
+static const unsigned short olympus_p3_keymap[ARRAY_SIZE(olympus_col_gpios) *
+                                            ARRAY_SIZE(olympus_row_gpios)] = {
        [KEYMAP_INDEX(0, 0)] = KEY_VOLUMEUP,
        [KEYMAP_INDEX(1, 0)] = KEY_CAMERA_FOCUS,
        [KEYMAP_INDEX(2, 0)] = KEY_MENU,
@@ -47,56 +48,56 @@ static const unsigned short tegra_p3_keymap[ARRAY_SIZE(tegra_col_gpios) *
        [KEYMAP_INDEX(2, 2)] = KEY_BACK,
 };
 
-static struct gpio_event_matrix_info tegra_keypad_matrix_info = {
+static struct gpio_event_matrix_info olympus_keypad_matrix_info = {
        .info.func = gpio_event_matrix_func,
-       .keymap = tegra_p3_keymap,
-       .output_gpios = tegra_col_gpios,
-       .input_gpios = tegra_row_gpios,
-       .noutputs = ARRAY_SIZE(tegra_col_gpios),
-       .ninputs = ARRAY_SIZE(tegra_row_gpios),
+       .keymap = olympus_p3_keymap,
+       .output_gpios = olympus_col_gpios,
+       .input_gpios = olympus_row_gpios,
+       .noutputs = ARRAY_SIZE(olympus_col_gpios),
+       .ninputs = ARRAY_SIZE(olympus_row_gpios),
        .settle_time.tv.nsec = 40 * NSEC_PER_USEC,
        .poll_time.tv.nsec = 20 * NSEC_PER_MSEC,
        .flags = GPIOKPF_LEVEL_TRIGGERED_IRQ | GPIOKPF_REMOVE_PHANTOM_KEYS |
                 GPIOKPF_PRINT_UNMAPPED_KEYS /*| GPIOKPF_PRINT_MAPPED_KEYS*/
 };
 
-static struct gpio_event_direct_entry tegra_keypad_switch_map[] = {
+static struct gpio_event_direct_entry olympus_keypad_switch_map[] = {
 };
 
-static struct gpio_event_input_info tegra_keypad_switch_info = {
+static struct gpio_event_input_info olympus_keypad_switch_info = {
        .info.func = gpio_event_input_func,
        .flags = 0,
        .type = EV_SW,
-       .keymap = tegra_keypad_switch_map,
-       .keymap_size = ARRAY_SIZE(tegra_keypad_switch_map)
+       .keymap = olympus_keypad_switch_map,
+       .keymap_size = ARRAY_SIZE(olympus_keypad_switch_map)
 };
 
-static struct gpio_event_info *tegra_keypad_info[] = {
-       &tegra_keypad_matrix_info.info,
-       &tegra_keypad_switch_info.info,
+static struct gpio_event_info *olympus_keypad_info[] = {
+       &olympus_keypad_matrix_info.info,
+       &olympus_keypad_switch_info.info,
 };
 
-static struct gpio_event_platform_data tegra_keypad_data = {
-       .name = "tegra-keypad",
-       .info = tegra_keypad_info,
-       .info_count = ARRAY_SIZE(tegra_keypad_info)
+static struct gpio_event_platform_data olympus_keypad_data = {
+       .name = "olympus-keypad",
+       .info = olympus_keypad_info,
+       .info_count = ARRAY_SIZE(olympus_keypad_info)
 };
 
-static struct platform_device tegra_keypad_device = {
+static struct platform_device olympus_keypad_device = {
        .name = GPIO_EVENT_DEV_NAME,
        .id = 0,
        .dev            = {
-               .platform_data  = &tegra_keypad_data,
+               .platform_data  = &olympus_keypad_data,
        },
 };
 
-static int tegra_reset_keys_up[] = {
+static int olympus_reset_keys_up[] = {
        BTN_MOUSE,              /* XXX */
         0
 };
 
-static struct keyreset_platform_data tegra_reset_keys_pdata = {
-       .keys_up = tegra_reset_keys_up,
+static struct keyreset_platform_data olympus_reset_keys_pdata = {
+       .keys_up = olympus_reset_keys_up,
        .keys_down = {
                KEY_LEFTSHIFT,
                KEY_LEFTALT,
@@ -105,12 +106,12 @@ static struct keyreset_platform_data tegra_reset_keys_pdata = {
        },
 };
 
-static struct platform_device tegra_reset_keys_device = {
+static struct platform_device olympus_reset_keys_device = {
          .name = KEYRESET_NAME,
-         .dev.platform_data = &tegra_reset_keys_pdata,
+         .dev.platform_data = &olympus_reset_keys_pdata,
 };
 
-static int __init tegra_init_keypad(void)
+int __init olympus_keypad_init(void)
 {
        tegra_gpio_enable(TEGRA_GPIO_PR0);
        tegra_gpio_enable(TEGRA_GPIO_PR1);
@@ -118,8 +119,6 @@ static int __init tegra_init_keypad(void)
        tegra_gpio_enable(TEGRA_GPIO_PQ0);
        tegra_gpio_enable(TEGRA_GPIO_PQ1);
        tegra_gpio_enable(TEGRA_GPIO_PQ2);
-       platform_device_register(&tegra_reset_keys_device);
-       return platform_device_register(&tegra_keypad_device);
+       platform_device_register(&olympus_reset_keys_device);
+       return platform_device_register(&olympus_keypad_device);
 }
-
-device_initcall(tegra_init_keypad);
index 229cca74ac6ea6a56b2d2df0414db13db5255572..25b2e92776a513c1fa5385751d24caa9f3d15ae5 100644 (file)
@@ -58,18 +58,6 @@ static struct platform_device tegra_fb_device = {
        },
 };
 
-static int __init olympus_init_panel(void) {
-       int ret;
-
-       if (!machine_is_olympus())
-               return 0;
-
-       ret = platform_device_register(&tegra_fb_device);
-       if (ret != 0)
-               return ret;
-
-       return 0;
+int __init olympus_panel_init(void) {
+       return platform_device_register(&tegra_fb_device);
 }
-
-device_initcall(olympus_init_panel);
-
index 947a1867faea779cfa9ffb656443c9d08917c713..f4500649bfa804d94573c0890ad3cbd8ec1e57f8 100644 (file)
  */
 
 #include <linux/kernel.h>
+#include <linux/init.h>
 #include <mach/pinmux.h>
 
 #include "board-olympus.h"
 
-static struct tegra_pingroup_config olympus_pinmux[] = {
+static __initdata struct tegra_pingroup_config olympus_pinmux[] = {
        {TEGRA_PINGROUP_ATA,   TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_ATC,   TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
@@ -138,7 +139,7 @@ static struct tegra_pingroup_config olympus_pinmux[] = {
        {TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
 };
 
-void olympus_pinmux_init(void)
+void __init olympus_pinmux_init(void)
 {
        tegra_pinmux_config_table(olympus_pinmux, ARRAY_SIZE(olympus_pinmux));
 }
index 19f37af1bfbb2d4005d0fedf25064a7309709237..af0200f7101266dc3f97dd69d3512b754d0d1873 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/wlan_plat.h>
 #include <mach/sdhci.h>
 
+#include "board-olympus.h"
 #include "gpio-names.h"
 
 #define OLYMPUS_WLAN_IRQ       TEGRA_GPIO_PU5
@@ -195,18 +196,10 @@ static void __init olympus_wlan_gpio(void)
        gpio_direction_input(OLYMPUS_WLAN_IRQ);
 }
 
-static int __init olympus_wlan_init(void)
+int __init olympus_wlan_init(void)
 {
-       int ret;
-
-       if (!machine_is_olympus())
-               return 0;
-
        pr_debug("%s: start\n", __func__);
        olympus_wlan_gpio();
        olympus_init_wifi_mem();
-       ret = platform_device_register(&olympus_wifi_device);
-       return ret;
+       return platform_device_register(&olympus_wifi_device);
 }
-
-late_initcall(olympus_wlan_init);
index 7ddf8a4147ea7da8692bc3d67bfc9c5f32a0a661..087b9397fa1a116a4a974d0a6fa252ab3a1c0860 100644 (file)
@@ -202,6 +202,14 @@ static struct platform_device *olympus_devices[] __initdata = {
        &androidusb_device,
        &pda_power_device,
        &hsuart,
+       &tegra_i2c_device1,
+       &tegra_i2c_device2,
+       &tegra_i2c_device3,
+       &tegra_i2c_device4,
+       &tegra_spi_device1,
+       &tegra_spi_device2,
+       &tegra_spi_device3,
+       &tegra_spi_device4,
 };
 
 extern struct tegra_sdhci_platform_data olympus_wifi_data; /* sdhci1 */
@@ -267,14 +275,18 @@ static void __init tegra_olympus_init(void)
 
        olympus_pinmux_init();
 
-       olympus_sdhci_init();
-
        tegra_clk_init_from_table(olympus_clk_init_table);
 
        clk = tegra_get_clock_by_name("uartb");
        debug_uart_platform_data[0].uartclk = clk_get_rate(clk);
 
        platform_add_devices(olympus_devices, ARRAY_SIZE(olympus_devices));
+
+       olympus_keypad_init();
+       olympus_i2c_init();
+       olympus_panel_init();
+       olympus_sdhci_init();
+       olympus_wlan_init();
 }
 
 MACHINE_START(OLYMPUS, "olympus")
index 8912bac185cc826d1cf669a62eac13921ef2e8b7..0201b56cbb6ce2df4107dc1ef8af24406a35ea34 100644 (file)
@@ -18,5 +18,9 @@
 #define _MACH_TEGRA_BOARD_OLYMPUS_H
 
 void olympus_pinmux_init(void);
+int olympus_keypad_init(void);
+void olympus_i2c_init(void);
+int olympus_panel_init(void);
+int olympus_wlan_init(void);
 
 #endif