@@ -19,6 +19,7 @@
#include <linux/regulator/fixed.h>
#include <linux/wl12xx.h>
#include <linux/mmc/host.h>
+#include <linux/mmc/card.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -196,6 +197,17 @@ struct wl12xx_platform_data omap_zoom_wlan_data __initdata
.board_ref_clock = 1,
};
+static void zoom_wl1271_init_card(struct mmc_card *card)
+{
+ /*
+ * Tell SDIO core to ignore the standard SDIO function interface
+ * codes indicated by the wl1271. This is required because the
+ * wl1271 erronouesly indicates its first function as a standard
+ * Bluetooth SDIO interface.
+ */
+ card->quirks |= MMC_QUIRK_NONSTD_FUNC_IF;
+}
+
static struct omap2_hsmmc_info mmc[] __initdata = {
{
.name = "external",
@@ -221,6 +233,7 @@ static struct omap2_hsmmc_info mmc[] __initdata = {
.gpio_wp = -EINVAL,
.gpio_cd = -EINVAL,
.nonremovable = true,
+ .init_card = zoom_wl1271_init_card,
},
{} /* Terminator */
};