Hi Pierre,
On Wed, Jan 5, 2011 at 12:48 AM, Pierre Tardy <[email protected]> wrote:
> This sounds good, and may solve this problem we have with wl1271.
> Then, how do you tell the mmc stack the wl1271 has the quirk
> MMC_QUIRK_NONSTD_FUNC_IF?
Something like this:
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/
index 5a8311f..f9f9c8a 100644
--- a/arch/arm/mach-omap2/board-zoom-peripherals.c
+++ b/arch/arm/mach-omap2/board-zoom-peripherals.c
@@ -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 */
};
This applies on the ZOOM board. in your case it would be a bit
different, but the core principle should stay the same.
Thanks,
Ohad.
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html