@@ -269,6 +269,10 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
mmc->slots[0].remux = c->remux;
+ mmc->slots[0].register_embedded_control =
+ c->register_embedded_control;
+ mmc->slots[0].virtual_get_cd = c->virtual_get_cd;
+
if (c->cover_only)
mmc->slots[0].cover = 1;
@@ -23,6 +23,11 @@ struct omap2_hsmmc_info {
int ocr_mask; /* temporary HACK */
/* Remux (pad configuation) when powering on/off */
void (*remux)(struct device *dev, int slot, int power_on);
+ /* following methods are for embedded sdio devices, e.g. wl1271 */
+ int (*register_embedded_control)(void *dev_id,
+ void (*set_virtual_cd)(void *dev_id, int card_present),
+ void (*set_embedded_data)(void *dev_id, void *priv));
+ int (*virtual_get_cd)(void);
};
#if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
@@ -140,6 +140,11 @@ struct omap_mmc_platform_data {
unsigned int ban_openended:1;
+ /* Embedded SDIO devices control */
+ int (*register_embedded_control)(void *dev_id,
+ void (*set_virtual_cd)(void *dev_id, int card_present),
+ void (*set_embedded_data)(void *dev_id, void *priv));
+ int (*virtual_get_cd)(void);
} slots[OMAP_MMC_MAX_SLOTS];
};