From 14490962a9231ed60bce943be504679dba3e1ae7 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 13 May 2010 16:43:26 -0700 Subject: [PATCH] [ARM] tegra: olympus: Make board init calls explicit Signed-off-by: Colin Cross Change-Id: I1ca16a8cf76f324937e47ce057123d2f28fd20b8 --- arch/arm/mach-tegra/board-olympus-i2c.c | 11 +--- arch/arm/mach-tegra/board-olympus-keypad.c | 67 +++++++++++----------- arch/arm/mach-tegra/board-olympus-panel.c | 16 +----- arch/arm/mach-tegra/board-olympus-pinmux.c | 5 +- arch/arm/mach-tegra/board-olympus-wifi.c | 13 +---- arch/arm/mach-tegra/board-olympus.c | 16 +++++- arch/arm/mach-tegra/board-olympus.h | 4 ++ 7 files changed, 62 insertions(+), 70 deletions(-) diff --git a/arch/arm/mach-tegra/board-olympus-i2c.c b/arch/arm/mach-tegra/board-olympus-i2c.c index e43c0b3ce8c2..aadc11a3e952 100644 --- a/arch/arm/mach-tegra/board-olympus-i2c.c +++ b/arch/arm/mach-tegra/board-olympus-i2c.c @@ -26,6 +26,8 @@ #include #include #include + +#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); - diff --git a/arch/arm/mach-tegra/board-olympus-keypad.c b/arch/arm/mach-tegra/board-olympus-keypad.c index 4ade18565090..9271c84c524f 100644 --- a/arch/arm/mach-tegra/board-olympus-keypad.c +++ b/arch/arm/mach-tegra/board-olympus-keypad.c @@ -19,23 +19,24 @@ #include #include #include +#include #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); diff --git a/arch/arm/mach-tegra/board-olympus-panel.c b/arch/arm/mach-tegra/board-olympus-panel.c index 229cca74ac6e..25b2e92776a5 100644 --- a/arch/arm/mach-tegra/board-olympus-panel.c +++ b/arch/arm/mach-tegra/board-olympus-panel.c @@ -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); - diff --git a/arch/arm/mach-tegra/board-olympus-pinmux.c b/arch/arm/mach-tegra/board-olympus-pinmux.c index 947a1867faea..f4500649bfa8 100644 --- a/arch/arm/mach-tegra/board-olympus-pinmux.c +++ b/arch/arm/mach-tegra/board-olympus-pinmux.c @@ -15,11 +15,12 @@ */ #include +#include #include #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)); } diff --git a/arch/arm/mach-tegra/board-olympus-wifi.c b/arch/arm/mach-tegra/board-olympus-wifi.c index 19f37af1bfbb..af0200f71012 100644 --- a/arch/arm/mach-tegra/board-olympus-wifi.c +++ b/arch/arm/mach-tegra/board-olympus-wifi.c @@ -12,6 +12,7 @@ #include #include +#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); diff --git a/arch/arm/mach-tegra/board-olympus.c b/arch/arm/mach-tegra/board-olympus.c index 7ddf8a4147ea..087b9397fa1a 100644 --- a/arch/arm/mach-tegra/board-olympus.c +++ b/arch/arm/mach-tegra/board-olympus.c @@ -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") diff --git a/arch/arm/mach-tegra/board-olympus.h b/arch/arm/mach-tegra/board-olympus.h index 8912bac185cc..0201b56cbb6c 100644 --- a/arch/arm/mach-tegra/board-olympus.h +++ b/arch/arm/mach-tegra/board-olympus.h @@ -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 -- 2.34.1