Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6
[pandora-kernel.git] / arch / arm / mach-omap2 / board-omap4panda.c
index 1ecd0a6..3094e20 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "hsmmc.h"
 #include "control.h"
+#include "mux.h"
 
 #define GPIO_HUB_POWER         1
 #define GPIO_HUB_NRESET                62
@@ -76,9 +77,9 @@ static struct platform_device *panda_devices[] __initdata = {
 
 static void __init omap4_panda_init_irq(void)
 {
-       omap2_init_common_hw(NULL, NULL);
+       omap2_init_common_infrastructure();
+       omap2_init_common_devices(NULL, NULL);
        gic_init_irq();
-       omap_gpio_init();
 }
 
 static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
@@ -133,15 +134,23 @@ error1:
 
 static struct omap_musb_board_data musb_board_data = {
        .interface_type         = MUSB_INTERFACE_UTMI,
-       .mode                   = MUSB_PERIPHERAL,
+       .mode                   = MUSB_OTG,
        .power                  = 100,
 };
 
+static struct twl4030_usb_data omap4_usbphy_data = {
+       .phy_init       = omap4430_phy_init,
+       .phy_exit       = omap4430_phy_exit,
+       .phy_power      = omap4430_phy_power,
+       .phy_set_clock  = omap4430_phy_set_clk,
+};
+
 static struct omap2_hsmmc_info mmc[] = {
        {
                .mmc            = 1,
                .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
                .gpio_wp        = -EINVAL,
+               .gpio_cd        = -EINVAL,
        },
        {}      /* Terminator */
 };
@@ -345,6 +354,7 @@ static struct twl4030_platform_data omap4_panda_twldata = {
        .vaux1          = &omap4_panda_vaux1,
        .vaux2          = &omap4_panda_vaux2,
        .vaux3          = &omap4_panda_vaux3,
+       .usb            = &omap4_usbphy_data,
 };
 
 static struct i2c_board_info __initdata omap4_panda_i2c_boardinfo[] = {
@@ -368,8 +378,23 @@ static int __init omap4_panda_i2c_init(void)
        omap_register_i2c_bus(4, 400, NULL, 0);
        return 0;
 }
+
+#ifdef CONFIG_OMAP_MUX
+static struct omap_board_mux board_mux[] __initdata = {
+       { .reg_offset = OMAP_MUX_TERMINATOR },
+};
+#else
+#define board_mux      NULL
+#endif
+
 static void __init omap4_panda_init(void)
 {
+       int package = OMAP_PACKAGE_CBS;
+
+       if (omap_rev() == OMAP4430_REV_ES1_0)
+               package = OMAP_PACKAGE_CBL;
+       omap4_mux_init(board_mux, package);
+
        omap4_panda_i2c_init();
        platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));
        omap_serial_init();
@@ -377,9 +402,7 @@ static void __init omap4_panda_init(void)
        /* OMAP4 Panda uses internal transceiver so register nop transceiver */
        usb_nop_xceiv_register();
        omap4_ehci_init();
-       /* FIXME: allow multi-omap to boot until musb is updated for omap4 */
-       if (!cpu_is_omap44xx())
-               usb_musb_init(&musb_board_data);
+       usb_musb_init(&musb_board_data);
 }
 
 static void __init omap4_panda_map_io(void)
@@ -391,6 +414,7 @@ static void __init omap4_panda_map_io(void)
 MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
        /* Maintainer: David Anders - Texas Instruments Inc */
        .boot_params    = 0x80000100,
+       .reserve        = omap_reserve,
        .map_io         = omap4_panda_map_io,
        .init_irq       = omap4_panda_init_irq,
        .init_machine   = omap4_panda_init,