2012/9/20 Ulf Hansson <ulf.hansson@xxxxxxxxxx>: > On 20 September 2012 13:33, Kevin Liu <keyuan.liu@xxxxxxxxx> wrote: >> Hi, Ulf >> >> 2012/9/19 Ulf Hansson <ulf.hansson@xxxxxxxxxx>: >>> Hi Kevin, >>> >>> On 19 September 2012 05:12, Kevin Liu <keyuan.liu@xxxxxxxxx> wrote: >>>> From: Kevin Liu <kliu5@xxxxxxxxxxx> >>>> >>>> If host support asynchronous interrupt and sdio device has enabled it, >>>> then enable/disable asynchronous interrupt on host when enable/disable >>>> sdio irq. >>>> >>>> Signed-off-by: Kevin Liu <kliu5@xxxxxxxxxxx> >>>> --- >>>> drivers/mmc/host/sdhci.c | 16 ++++++++++++++++ >>>> drivers/mmc/host/sdhci.h | 2 ++ >>>> 2 files changed, 18 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c >>>> index 0e15c79..f6136e2 100644 >>>> --- a/drivers/mmc/host/sdhci.c >>>> +++ b/drivers/mmc/host/sdhci.c >>>> @@ -1575,6 +1575,8 @@ static int sdhci_get_ro(struct mmc_host *mmc) >>>> >>>> static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable) >>>> { >>>> + u16 ctrl; >>>> + >>>> if (host->flags & SDHCI_DEVICE_DEAD) >>>> goto out; >>>> >>>> @@ -1583,6 +1585,16 @@ static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable) >>>> else >>>> host->flags &= ~SDHCI_SDIO_IRQ_ENABLED; >>>> >>>> + if ((host->mmc->caps2 & MMC_CAP2_ASYNC_INT) && >>>> + (host->mmc->card->cccr.async_int)) { >>> >>> It is a quite special card bit value you are checking for. Can you be >>> sure that the cccr struct exist here? >>> >> The bit async_int is added to struct sdio_cccr by my previous patch 0002. >> If EAI is enabled, this bit will be set. >> >>> Maybe it could be a good idea to implement something similar as for >>> example mmc_card_highspeed | mmc_card_set_highspeed functions. >>> Thus add a new card state, which is set accordingly when this bit is >>> set and instead check for this state here. In this case you would not >>> have to check the caps2 here, since that is already done by the >>> protocol layer. >>> >> I think you want to replace the check for host->mmc->card->cccr.async_int with >> mmc_card_xxx, right? It's a good idea. > > Correct! > >> It's not reasonable to replace caps2 with such function since they are >> for card status >> rather than host. >> How do you think? > > I mean in the sdio framework, you already consider the new CAP before > setting cccr.async and thus the "mmc_card_xxx" depend on this CAP as > well. This will mean that the host driver does not need to check the > CAP here, mmc_card_xxx is enough. > Righit, I will update the patch. 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