Re: omap_hsmmc: sdio: issue with generic wakeup IRQ handling

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

 



Hi Vishal,

I remember there was a problem with IRQ, but can't remember on top of
my head. Meanwhile this might be some pointer:

diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c
b/drivers/net/wireless/mwifiex/sta_ioctl.c
index a6c8a4f..67587c2 100644
--- a/drivers/net/wireless/mwifiex/sta_ioctl.c
+++ b/drivers/net/wireless/mwifiex/sta_ioctl.c
@@ -517,6 +517,17 @@ int mwifiex_enable_hs(struct mwifiex_adapter *adapter)
        adapter->hs_enabling = true;
        mwifiex_cancel_all_pending_cmd(adapter);

+       /* if the MMC host is already in suspend it will not detect SDIO irq
+        * and we might run into response timeout. By claiming the MMC host we
+        * wake it up, which is sufficient to detect a pending IRQ
+        */
+       {
+               struct sdio_mmc_card *card = adapter->card;
+               sdio_claim_host(card->func);
+               printk("+++ poll mmc host for IRQ +++\n");
+               sdio_release_host(card->func);
+       }
+
        if (mwifiex_set_hs_params(mwifiex_get_priv(adapter,
                                                   MWIFIEX_BSS_ROLE_STA),
                                  HostCmd_ACT_GEN_SET, MWIFIEX_SYNC_CMD,

2016-02-18 19:27 GMT+01:00 Vishal Thanki <vishalthanki@xxxxxxxxx>:
> Hi,
>
> On a custom built am335x based board, I am facing an issue mwifiex wifi
> module which is connected to host via SDIO interface. I am using kernel
> version 4.4.
>
> The problem is related to the wifi "ext_scan" command getting timed out
> over SDIO. This was working with old kernel (v4.0), but does not work on
> kernel v4.4. I found the following commit is responsible for this
> behavior.
>
> =================================
> 5b83b2234be6733cfe22036c38031b2c890b3db8
>
> mmc: omap_hsmmc: Change wake-up interrupt to use generic wakeirq
>
> We can now use generic wakeirq handling and remove the custom handling
> for the wake-up interrupts.
> =================================
>
> There is no wifi issue if I revert the above mentioned commit on kernel
> v4.4.
>
> I see that before this commit, the wakeup IRQ handler was registered
> within the omap_hsmmc.c itself with additional IRQF_TRIGGER_LOW flag.
> But with the introduction to dev_pm_set_dedicated_wake_irq(), the
> generic wakeup IRQ handler is registered which does not take the
> IRQF_TRIGGER flag. I am not sure if that is the issue, but I added that
> IRQF_TRIGGER_LOW flag in dev_pm_set_dedicated_wake_irq() while
> registering a threaded IRQ handler, I could see the problem disappears.
> However, this change is causing the infinite interrupts because the of
> level triggered interrupt is not handled in generic wakeup IRQ handling
> code (as it was done specially in omap_hsmmc.c code earlier).
>
> I am not much familiar with MMC/SDIO driver and I am not sure how to fix
> this behavior. So any guidance would be really helpful.
>
> Thanks,
> Vishal
--
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