The patch titled sdio: add CD disable support has been added to the -mm tree. Its filename is sdio-add-cd-disable-support.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: sdio: add CD disable support From: Ohad Ben-Cohen <ohad@xxxxxxxxxx> Add support to disconnect the pull-up resistor on CD/DAT[3] (pin 1) of the card. This may be desired on certain setups of boards, controllers and embedded sdio devices which do not need the card's pull-up. As a result, card detection is disabled and power is saved. Signed-off-by: Ohad Ben-Cohen <ohad@xxxxxxxxxx> Acked-by: Matt Fleming <matt@xxxxxxxxxxxxxxxxx> Cc: Ian Molton <ian@xxxxxxxxxxxxxx> Cc: "Roberto A. Foglietta" <roberto.foglietta@xxxxxxxxx> Cc: Philip Langdale <philipl@xxxxxxxxx> Cc: Pierre Ossman <pierre@xxxxxxxxx> Cc: Vrabel <david.vrabel@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/mmc/core/sdio.c | 34 ++++++++++++++++++++++++++++++++++ include/linux/mmc/card.h | 3 ++- 2 files changed, 36 insertions(+), 1 deletion(-) diff -puN drivers/mmc/core/sdio.c~sdio-add-cd-disable-support drivers/mmc/core/sdio.c --- a/drivers/mmc/core/sdio.c~sdio-add-cd-disable-support +++ a/drivers/mmc/core/sdio.c @@ -165,6 +165,33 @@ static int sdio_enable_wide(struct mmc_c } /* + * If desired, disconnect the pull-up resistor on CD/DAT[3] (pin 1) + * of the card. This may be required on certain setups of boards, + * controllers and embedded sdio device which do not need the card's + * pull-up. As a result, card detection is disabled and power is saved. + */ +static int sdio_disable_cd(struct mmc_card *card) +{ + int ret; + u8 ctrl; + + if (!card->cccr.disable_cd) + return 0; + + ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_IF, 0, &ctrl); + if (ret) + return ret; + + ctrl |= SDIO_BUS_CD_DISABLE; + + ret = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_IF, ctrl, NULL); + if (ret) + return ret; + + return 0; +} + +/* * Test if the card supports high-speed mode and, if so, switch to it. */ static int sdio_enable_hs(struct mmc_card *card) @@ -385,6 +412,13 @@ int mmc_attach_sdio(struct mmc_host *hos goto remove; /* + * If needed, disconnect card detection pull-up resistor. + */ + err = sdio_disable_cd(card); + if (err) + goto remove; + + /* * Initialize (but don't add) all present functions. */ for (i = 0;i < funcs;i++) { diff -puN include/linux/mmc/card.h~sdio-add-cd-disable-support include/linux/mmc/card.h --- a/include/linux/mmc/card.h~sdio-add-cd-disable-support +++ a/include/linux/mmc/card.h @@ -64,7 +64,8 @@ struct sdio_cccr { low_speed:1, wide_bus:1, high_power:1, - high_speed:1; + high_speed:1, + disable_cd:1; }; struct sdio_cis { _ Patches currently in -mm which might be from ohad@xxxxxxxxxx are sdio-add-cd-disable-support.patch sdio-add-cd-disable-support-cleanup.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html