2013/3/1 Kevin Liu <keyuan.liu@xxxxxxxxx>: > 2013/3/1 Philip Rakity <prakity@xxxxxxxxxx>: >> >> On Mar 1, 2013, at 9:40 AM, Kevin Liu <kliu5@xxxxxxxxxxx> wrote: >> >>> in function sdhci_request: >>> 1. If quirk SDHCI_QUIRK_BROKEN_CARD_DETECTION is selected, there is no >>> card detection available and polling must be used. Gpio detect must >>> _not_ be supported under this case. >>> Change the sequence to check SDHCI_QUIRK_BROKEN_CARD_DETECTION first, >>> which make code more clear. >>> 2. nonremovable card should be also assumed always present. >>> >>> in function sdhci_enable_irq_wakeups: >>> 1. nonremovable card should be also assumed no insert/remove wakeup >>> needed like some sdio cards which is nonremovable and can wakeup host >>> only by card int. >>> >>> Signed-off-by: Kevin Liu <kliu5@xxxxxxxxxxx> >>> --- >>> drivers/mmc/host/sdhci.c | 30 ++++++++++++++++-------------- >>> 1 file changed, 16 insertions(+), 14 deletions(-) >>> >>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c >>> index c94fd6c..e4ada0d 100644 >>> --- a/drivers/mmc/host/sdhci.c >>> +++ b/drivers/mmc/host/sdhci.c >>> @@ -1337,19 +1337,20 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) >>> >>> host->mrq = mrq; >>> >>> - /* >>> - * Firstly check card presence from cd-gpio. The return could >>> - * be one of the following possibilities: >>> - * negative: cd-gpio is not available >>> - * zero: cd-gpio is used, and card is removed >>> - * one: cd-gpio is used, and card is present >>> - */ >>> - present = mmc_gpio_get_cd(host->mmc); >>> - if (present < 0) { >>> - /* If polling, assume that the card is always present. */ >>> - if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) >>> - present = 1; >>> - else >>> + /* If polling/nonremovable, assume that the card is always present. */ >>> + if ((host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) || >>> + (host->mmc->caps & MMC_CAP_NONREMOVABLE)) { >>> + present = 1; >>> + } else { >>> + /* >>> + * Firstly check card presence from cd-gpio. The return could >>> + * be one of the following possibilities: >>> + * negative: cd-gpio is not available >>> + * zero: cd-gpio is used, and card is removed >>> + * one: cd-gpio is used, and card is present >>> + */ >>> + present = mmc_gpio_get_cd(host->mmc); >>> + if (IS_ERR_VALUE(present)) >>> present = sdhci_readl(host, SDHCI_PRESENT_STATE) & >>> SDHCI_CARD_PRESENT; >> >> Hi Kevin >> >> does it make sense to move this logic to a more generic function (static inline ?) >> int sdhci_card_present () >> >> and encapsulate all the logic there for gpio cd, present state (card is there) etc. >> >> Philip >> > > Philip, > > Good idea...Will call the function "sdhci_do_get_cd" introdunced in my > previous patch. Thanks! > This patch has been updated and added to below patchset. [PATCH 0/3] mmc: core/sdhci: enhance card detect code ([PATCH v3 3/3] mmc: sdhci: update check code for cd-broken or) So it can be ignored. Thanks Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html