Merge git://git.infradead.org/mtd-2.6
[pandora-kernel.git] / arch / arm / mach-omap2 / board-omap3evm.c
index 45227f3..7d7b5bc 100644 (file)
@@ -448,20 +448,23 @@ static struct twl4030_usb_data omap3evm_usb_data = {
 
 static int board_keymap[] = {
        KEY(0, 0, KEY_LEFT),
-       KEY(0, 1, KEY_RIGHT),
-       KEY(0, 2, KEY_A),
-       KEY(0, 3, KEY_B),
-       KEY(1, 0, KEY_DOWN),
+       KEY(0, 1, KEY_DOWN),
+       KEY(0, 2, KEY_ENTER),
+       KEY(0, 3, KEY_M),
+
+       KEY(1, 0, KEY_RIGHT),
        KEY(1, 1, KEY_UP),
-       KEY(1, 2, KEY_E),
-       KEY(1, 3, KEY_F),
-       KEY(2, 0, KEY_ENTER),
-       KEY(2, 1, KEY_I),
+       KEY(1, 2, KEY_I),
+       KEY(1, 3, KEY_N),
+
+       KEY(2, 0, KEY_A),
+       KEY(2, 1, KEY_E),
        KEY(2, 2, KEY_J),
-       KEY(2, 3, KEY_K),
-       KEY(3, 0, KEY_M),
-       KEY(3, 1, KEY_N),
-       KEY(3, 2, KEY_O),
+       KEY(2, 3, KEY_O),
+
+       KEY(3, 0, KEY_B),
+       KEY(3, 1, KEY_F),
+       KEY(3, 2, KEY_K),
        KEY(3, 3, KEY_P)
 };
 
@@ -632,7 +635,7 @@ static struct platform_device *omap3_evm_devices[] __initdata = {
        &omap3_evm_dss_device,
 };
 
-static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
+static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
 
        .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
        .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
@@ -647,12 +650,24 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
 
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
+       OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP |
+                               OMAP_PIN_OFF_INPUT_PULLUP |
+                               OMAP_PIN_OFF_WAKEUPENABLE),
+       OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
+                               OMAP_PIN_OFF_INPUT_PULLUP |
+                               OMAP_PIN_OFF_WAKEUPENABLE),
        { .reg_offset = OMAP_MUX_TERMINATOR },
 };
 #else
 #define board_mux      NULL
 #endif
 
+static struct omap_musb_board_data musb_board_data = {
+       .interface_type         = MUSB_INTERFACE_ULPI,
+       .mode                   = MUSB_OTG,
+       .power                  = 100,
+};
+
 static void __init omap3_evm_init(void)
 {
        omap3_evm_get_revision();
@@ -666,10 +681,10 @@ static void __init omap3_evm_init(void)
                                ARRAY_SIZE(omap3evm_spi_board_info));
 
        omap_serial_init();
-#ifdef CONFIG_NOP_USB_XCEIV
+
        /* OMAP3EVM uses ISP1504 phy and so register nop transceiver */
        usb_nop_xceiv_register();
-#endif
+
        if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
                /* enable EHCI VBUS using GPIO22 */
                omap_mux_init_gpio(22, OMAP_PIN_INPUT_PULLUP);
@@ -687,12 +702,15 @@ static void __init omap3_evm_init(void)
                omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP);
                ehci_pdata.reset_gpio_port[1] = 21;
 
+               /* EVM REV >= E can supply 500mA with EXTVBUS programming */
+               musb_board_data.power = 500;
+               musb_board_data.extvbus = 1;
        } else {
                /* setup EHCI phy reset on MDC */
                omap_mux_init_gpio(135, OMAP_PIN_OUTPUT);
                ehci_pdata.reset_gpio_port[1] = 135;
        }
-       usb_musb_init();
+       usb_musb_init(&musb_board_data);
        usb_ehci_init(&ehci_pdata);
        ads7846_dev_init();
        omap3evm_init_smsc911x();