]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/mach-omap2/board-omap3pandora.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / arch / arm / mach-omap2 / board-omap3pandora.c
index 89ed1be2d62e0d7214ef968e44d73170ebe35a22..0b34beded11f066c5ae48fa02478f66b2bf11445 100644 (file)
@@ -293,7 +293,7 @@ static struct omap2_hsmmc_info omap3pandora_mmc[] = {
        },
        {
                .mmc            = 3,
-               .caps           = MMC_CAP_4_BIT_DATA,
+               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
                .gpio_cd        = -EINVAL,
                .gpio_wp        = -EINVAL,
                .init_card      = pandora_wl1251_init_card,
@@ -636,37 +636,19 @@ static struct spi_board_info omap3pandora_spi_board_info[] __initdata = {
 
 static void __init omap3pandora_init_irq(void)
 {
-       omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
-                            mt46h32m32lf6_sdrc_params);
+       omap2_init_common_infrastructure();
+       omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
+                                 mt46h32m32lf6_sdrc_params);
        omap_init_irq();
-       omap_gpio_init();
-}
-
-static void pandora_wl1251_set_power(bool enable)
-{
-       /*
-        * Keep power always on until wl1251_sdio driver learns to re-init
-        * the chip after powering it down and back up.
-        */
 }
 
-static struct wl12xx_platform_data pandora_wl1251_pdata = {
-       .set_power      = pandora_wl1251_set_power,
-       .use_eeprom     = true,
-};
-
-static struct platform_device pandora_wl1251_data = {
-       .name           = "wl1251_data",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &pandora_wl1251_pdata,
-       },
-};
-
-static void pandora_wl1251_init(void)
+static void __init pandora_wl1251_init(void)
 {
+       struct wl12xx_platform_data pandora_wl1251_pdata;
        int ret;
 
+       memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata));
+
        ret = gpio_request(PANDORA_WIFI_IRQ_GPIO, "wl1251 irq");
        if (ret < 0)
                goto fail;
@@ -679,6 +661,11 @@ static void pandora_wl1251_init(void)
        if (pandora_wl1251_pdata.irq < 0)
                goto fail_irq;
 
+       pandora_wl1251_pdata.use_eeprom = true;
+       ret = wl12xx_set_platform_data(&pandora_wl1251_pdata);
+       if (ret < 0)
+               goto fail_irq;
+
        return;
 
 fail_irq:
@@ -691,7 +678,6 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
        &pandora_leds_gpio,
        &pandora_keys_gpio,
        &pandora_dss_device,
-       &pandora_wl1251_data,
        &pandora_vwlan_device,
 };
 
@@ -711,8 +697,6 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
 static struct omap_board_mux board_mux[] __initdata = {
        { .reg_offset = OMAP_MUX_TERMINATOR },
 };
-#else
-#define board_mux      NULL
 #endif
 
 static struct omap_musb_board_data musb_board_data = {