Re: [RFC/PATCH 3/3] mmc: sdhci: add asynchronous interrupt support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux