]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
osk5912: Mistral eeprom support
authorDavid Brownell <dbrownell@users.sourceforge.net>
Sat, 8 Nov 2008 03:14:59 +0000 (19:14 -0800)
committerTony Lindgren <tony@atomide.com>
Thu, 13 Nov 2008 22:21:01 +0000 (14:21 -0800)
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 <dbrownell@users.sourceforge.net>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap1/board-osk.c

index d78ce821c4edb0ed88dfa6dd51a607e34d1cdc76..9312de198b6ceaf32e927b7675e8dffd0bfac7c1 100644 (file)
@@ -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 <linux/input.h>
+#include <linux/i2c/at24.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/ads7846.h>
 
 #include <mach/keypad.h>
 
+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