From 434011534b9a655c74fb0e4be26636af02aeb1d8 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Fri, 7 Nov 2008 19:14:59 -0800 Subject: [PATCH] osk5912: Mistral eeprom support List the 4 Kbit I2C EEPROM included on the Mistral board. Also add a comment about the hardware workaround needed to properly support the WAKE button. More info at http://elinux.org/OSK_Mistral_wakeup_button_mod Still no support for the (optional) camera sensor. Signed-off-by: David Brownell Signed-off-by: Tony Lindgren --- arch/arm/mach-omap1/board-osk.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index d78ce821c4e..9312de198b6 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c @@ -261,10 +261,6 @@ static struct i2c_board_info __initdata osk_i2c_board_info[] = { { I2C_BOARD_INFO("tlv320aic23", 0x1B), }, - /* TODO when driver support is ready: - * - on Mistral, 24c04 eeprom at 0x50 - * - optionally on Mistral, ov9640 camera sensor at 0x30 - */ }; static void __init osk_init_smc91x(void) @@ -339,11 +335,28 @@ static struct omap_board_config_kernel osk_config[] __initdata = { #ifdef CONFIG_OMAP_OSK_MISTRAL #include +#include #include #include #include +static struct at24_platform_data at24c04 = { + .byte_len = SZ_4K / 8, + .page_size = 16, +}; + +static struct i2c_board_info __initdata mistral_i2c_board_info[] = { + { + /* NOTE: powered from LCD supply */ + I2C_BOARD_INFO("24c04", 0x50), + .platform_data = &at24c04, + }, + /* TODO when driver support is ready: + * - optionally ov9640 camera sensor at 0x30 + */ +}; + static const int osk_keymap[] = { /* KEY(col, row, code) */ KEY(0, 0, KEY_F1), /* SW4 */ @@ -490,7 +503,13 @@ static void __init osk_mistral_init(void) spi_register_board_info(mistral_boardinfo, ARRAY_SIZE(mistral_boardinfo)); - /* the sideways button (SW1) is for use as a "wakeup" button */ + /* the sideways button (SW1) is for use as a "wakeup" button + * + * NOTE: The Mistral board has the wakeup button (SW1) wired + * to the LCD 3.3V rail, which is powered down during suspend. + * To allow this button to wake up the omap, work around this + * HW bug by rewiring SW1 to use the main 3.3V rail. + */ omap_cfg_reg(N15_1610_MPUIO2); if (gpio_request(OMAP_MPUIO(2), "wakeup") == 0) { int ret = 0; @@ -523,6 +542,9 @@ static void __init osk_mistral_init(void) if (gpio_request(2, "lcd_pwr") == 0) gpio_direction_output(2, 1); + i2c_register_board_info(1, mistral_i2c_board_info, + ARRAY_SIZE(mistral_i2c_board_info)); + platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices)); } #else -- 2.41.1