mmc: implement SD-combo (IO+mem) support
PATCH 33/177 mmc: implement SD-combo (IO+mem) support
From: Michal Miroslaw <[email protected]>
Signed-off-by Michal Miroslaw <[email protected]>
Cc Adrian Hunter <[email protected]>
Cc Chris Ball <[email protected]>
Cc <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
drivers/mmc/core/bus.c | 9 ++ drivers/mmc/core/core.c | 12 ++- drivers/mmc/core/sdio.c | 135 +++++++++++++++++++++++++++++++------ include/linux/mmc/card.h | 1 4 files changed, 134 insertions(+), 23 deletions(-)
drivers/mmc/core/bus.c renamed from drivers/mmc/core/bus.c~mmc-implement-sd-combo-iomem-support +9 -0
@@ -37,6 +37,8 @@ static ssize_t mmc_type_show(struct devireturn sprintf (buf,"SD\n" );case MMC_TYPE_SDIO :return sprintf (buf,"SDIO\n" ); +case MMC_TYPE_SD_COMBO : +return sprintf (buf,"SDcombo\n" );default :return -EFAULT ; }
@@ -74,6 +76,9 @@ mmc_bus_uevent(struct device *dev, struccase MMC_TYPE_SDIO : type ="SDIO" ;break ; +case MMC_TYPE_SD_COMBO : + type ="SDcombo" ; +break ;default : type =NULL ; }
@@ -239,6 +244,10 @@ int mmc_add_card(struct mmc_card *card)case MMC_TYPE_SDIO : type ="SDIO" ;break ; +case MMC_TYPE_SD_COMBO : + type ="SD-combo" ; +if (mmc_card_blockaddr (card)) + type ="SDHC-combo" ;default : type ="?" ;break ;
drivers/mmc/core/core.c renamed from drivers/mmc/core/core.c~mmc-implement-sd-combo-iomem-support +10 -2
@@ -1099,8 +1099,15 @@ void mmc_rescan(struct work_struct *work*/ err =mmc_send_io_op_cond (host,0 , &ocr);if (!err) { -if (mmc_attach_sdio (host, ocr)) -mmc_power_off (host); +if (mmc_attach_sdio (host, ocr)) { +mmc_claim_host (host); +/* try SDMEM (but not MMC) even if SDIO is broken */ +if (mmc_send_app_op_cond (host,0 , &ocr)) + goto out_fail; + +if (mmc_attach_sd (host, ocr)) +mmc_power_off (host); + } goto out; }
@@ -1124,6 +1131,7 @@ void mmc_rescan(struct work_struct *work goto out; } +out_fail:mmc_release_host (host);mmc_power_off (host);
drivers/mmc/core/sdio.c renamed from drivers/mmc/core/sdio.c~mmc-implement-sd-combo-iomem-support +114 -21
209 lines not on this page · raw message
include/linux/mmc/card.h renamed from include/linux/mmc/card.h~mmc-implement-sd-combo-iomem-support +1 -0
@@ -93,6 +93,7 @@ struct mmc_card {#define MMC_TYPE_MMC 0/* MMC card */ #define MMC_TYPE_SD 1/* SD card */ #define MMC_TYPE_SDIO 2/* SDIO card */ +#define MMC_TYPE_SD_COMBO 3/* SD combo (IO+mem) card */ unsigned int state;/* (our) card state */ #define MMC_STATE_PRESENT (1<<0)/* present in sysfs */ #define MMC_STATE_READONLY (1<<1)/* card is read-only */
_