diff mbox series

misc: rtsx: Add short delay after exit from ASPM

Message ID b966d133-4e1e-f050-f1ca-67aa7eaf0ca7@doth.eu
State New
Headers show
Series misc: rtsx: Add short delay after exit from ASPM | expand

Commit Message

Klaus Doth May 22, 2020, 8:23 a.m. UTC
From: Klaus Doth <kdlnx@doth.eu>

DMA transfers to and from the SD card stall for 10 seconds and run into
timeout on RTS5260 card readers after ASPM was enabled.

Adding a short msleep after disabling ASPM fixes the issue on several
Dell Precision 7530/7540 systems I tested.

This function is only called when waking up after the chip went into
power-save after not transferring data for a few seconds. The added
msleep does therefore not change anything in data transfer speed or
induce any excessive waiting while data transfers are running, or the
chip is sleeping. Only the transition from sleep to active is affected.

Signed-off-by: Klaus Doth <kdlnx@doth.eu>
---
 drivers/misc/cardreader/rtsx_pcr.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Arnd Bergmann May 22, 2020, 8:33 a.m. UTC | #1
On Fri, May 22, 2020 at 10:23 AM Klaus Doth <kdlnx@doth.eu> wrote:
>
> From: Klaus Doth <kdlnx@doth.eu>
>
> DMA transfers to and from the SD card stall for 10 seconds and run into
> timeout on RTS5260 card readers after ASPM was enabled.
>
> Adding a short msleep after disabling ASPM fixes the issue on several
> Dell Precision 7530/7540 systems I tested.
>
> This function is only called when waking up after the chip went into
> power-save after not transferring data for a few seconds. The added
> msleep does therefore not change anything in data transfer speed or
> induce any excessive waiting while data transfers are running, or the
> chip is sleeping. Only the transition from sleep to active is affected.
>
> Signed-off-by: Klaus Doth <kdlnx@doth.eu>
> ---
>  drivers/misc/cardreader/rtsx_pcr.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/misc/cardreader/rtsx_pcr.c
> b/drivers/misc/cardreader/rtsx_pcr.c
> index 06038b325b02..8b0799cd88c2 100644
> --- a/drivers/misc/cardreader/rtsx_pcr.c
> +++ b/drivers/misc/cardreader/rtsx_pcr.c
> @@ -141,6 +141,7 @@ static void rtsx_comm_pm_full_on(struct rtsx_pcr *pcr)
>      struct rtsx_cr_option *option = &pcr->option;
>
>      rtsx_disable_aspm(pcr);
> +    msleep(1);

Your patch looks fine to me, but I think you should put a short version
of that the changelog text into a code comment next to the msleep().

       Arnd
diff mbox series

Patch

diff --git a/drivers/misc/cardreader/rtsx_pcr.c
b/drivers/misc/cardreader/rtsx_pcr.c
index 06038b325b02..8b0799cd88c2 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -141,6 +141,7 @@  static void rtsx_comm_pm_full_on(struct rtsx_pcr *pcr)
     struct rtsx_cr_option *option = &pcr->option;
 
     rtsx_disable_aspm(pcr);
+    msleep(1);
 
     if (option->ltr_enabled)
         rtsx_set_ltr_latency(pcr, option->ltr_active_latency);