2022-11-04 10:43:55

by Chevron Li (WH)

[permalink] [raw]
Subject: [PATCH V1 1/1] mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout

The SD card is recognized failed sometimes when resume from suspend.
Because CD# debounce time too long then card present report wrong.
Finally, card is recognized failed.

Signed-off-by: Chevron Li <[email protected]>
---
Change in V1:
Adjust bayhub chip setting for CD# debounce time to minimum value
---
drivers/mmc/host/sdhci-pci-o2micro.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c
index ad457cd9cbaa..bca1d095b759 100644
--- a/drivers/mmc/host/sdhci-pci-o2micro.c
+++ b/drivers/mmc/host/sdhci-pci-o2micro.c
@@ -32,6 +32,7 @@
#define O2_SD_CAPS 0xE0
#define O2_SD_ADMA1 0xE2
#define O2_SD_ADMA2 0xE7
+#define O2_SD_MISC_CTRL2 0xF0
#define O2_SD_INF_MOD 0xF1
#define O2_SD_MISC_CTRL4 0xFC
#define O2_SD_MISC_CTRL 0x1C0
@@ -877,6 +878,12 @@ static int sdhci_pci_o2_probe(struct sdhci_pci_chip *chip)
/* Set Tuning Windows to 5 */
pci_write_config_byte(chip->pdev,
O2_SD_TUNING_CTRL, 0x55);
+ //Adjust 1st and 2nd CD debounce time
+ pci_read_config_dword(chip->pdev, O2_SD_MISC_CTRL2, &scratch_32);
+ scratch_32 &= 0xFFE7FFFF;
+ scratch_32 |= 0x00180000;
+ pci_write_config_dword(chip->pdev, O2_SD_MISC_CTRL2, scratch_32);
+ pci_write_config_dword(chip->pdev, O2_SD_DETECT_SETTING, 1);
/* Lock WP */
ret = pci_read_config_byte(chip->pdev,
O2_SD_LOCK_WP, &scratch);

base-commit: ee6050c8af96bba2f81e8b0793a1fc2f998fcd20
--
2.25.1



2022-11-07 21:05:20

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH V1 1/1] mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout

On Fri, 4 Nov 2022 at 10:55, Chevron Li <[email protected]> wrote:
>
> The SD card is recognized failed sometimes when resume from suspend.
> Because CD# debounce time too long then card present report wrong.
> Finally, card is recognized failed.
>
> Signed-off-by: Chevron Li <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
> Change in V1:
> Adjust bayhub chip setting for CD# debounce time to minimum value
> ---
> drivers/mmc/host/sdhci-pci-o2micro.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c
> index ad457cd9cbaa..bca1d095b759 100644
> --- a/drivers/mmc/host/sdhci-pci-o2micro.c
> +++ b/drivers/mmc/host/sdhci-pci-o2micro.c
> @@ -32,6 +32,7 @@
> #define O2_SD_CAPS 0xE0
> #define O2_SD_ADMA1 0xE2
> #define O2_SD_ADMA2 0xE7
> +#define O2_SD_MISC_CTRL2 0xF0
> #define O2_SD_INF_MOD 0xF1
> #define O2_SD_MISC_CTRL4 0xFC
> #define O2_SD_MISC_CTRL 0x1C0
> @@ -877,6 +878,12 @@ static int sdhci_pci_o2_probe(struct sdhci_pci_chip *chip)
> /* Set Tuning Windows to 5 */
> pci_write_config_byte(chip->pdev,
> O2_SD_TUNING_CTRL, 0x55);
> + //Adjust 1st and 2nd CD debounce time
> + pci_read_config_dword(chip->pdev, O2_SD_MISC_CTRL2, &scratch_32);
> + scratch_32 &= 0xFFE7FFFF;
> + scratch_32 |= 0x00180000;
> + pci_write_config_dword(chip->pdev, O2_SD_MISC_CTRL2, scratch_32);
> + pci_write_config_dword(chip->pdev, O2_SD_DETECT_SETTING, 1);
> /* Lock WP */
> ret = pci_read_config_byte(chip->pdev,
> O2_SD_LOCK_WP, &scratch);
>
> base-commit: ee6050c8af96bba2f81e8b0793a1fc2f998fcd20
> --
> 2.25.1
>

2022-11-16 06:26:39

by Louis Lu(TP)

[permalink] [raw]
Subject: RE: [PATCH V1 1/1] mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout

Hi Uffe,

May we check when this update patched will be phased in?

Thanks,
Best Regards,
Louis Lu

-----Original Message-----
From: Ulf Hansson <[email protected]>
Sent: Tuesday, November 8, 2022 4:13 AM
To: Chevron Li (WH) <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; Shaper Liu (WH) <[email protected]>; XiaoGuang Yu (WH) <[email protected]>; Shirley Her(SC) <[email protected]>; Louis Lu(TP) <[email protected]>
Subject: Re: [PATCH V1 1/1] mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout

On Fri, 4 Nov 2022 at 10:55, Chevron Li <[email protected]> wrote:
>
> The SD card is recognized failed sometimes when resume from suspend.
> Because CD# debounce time too long then card present report wrong.
> Finally, card is recognized failed.
>
> Signed-off-by: Chevron Li <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
> Change in V1:
> Adjust bayhub chip setting for CD# debounce time to minimum value
> ---
> drivers/mmc/host/sdhci-pci-o2micro.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c
> index ad457cd9cbaa..bca1d095b759 100644
> --- a/drivers/mmc/host/sdhci-pci-o2micro.c
> +++ b/drivers/mmc/host/sdhci-pci-o2micro.c
> @@ -32,6 +32,7 @@
> #define O2_SD_CAPS 0xE0
> #define O2_SD_ADMA1 0xE2
> #define O2_SD_ADMA2 0xE7
> +#define O2_SD_MISC_CTRL2 0xF0
> #define O2_SD_INF_MOD 0xF1
> #define O2_SD_MISC_CTRL4 0xFC
> #define O2_SD_MISC_CTRL 0x1C0
> @@ -877,6 +878,12 @@ static int sdhci_pci_o2_probe(struct sdhci_pci_chip *chip)
> /* Set Tuning Windows to 5 */
> pci_write_config_byte(chip->pdev,
> O2_SD_TUNING_CTRL, 0x55);
> + //Adjust 1st and 2nd CD debounce time
> + pci_read_config_dword(chip->pdev, O2_SD_MISC_CTRL2, &scratch_32);
> + scratch_32 &= 0xFFE7FFFF;
> + scratch_32 |= 0x00180000;
> + pci_write_config_dword(chip->pdev, O2_SD_MISC_CTRL2, scratch_32);
> + pci_write_config_dword(chip->pdev, O2_SD_DETECT_SETTING, 1);
> /* Lock WP */
> ret = pci_read_config_byte(chip->pdev,
> O2_SD_LOCK_WP, &scratch);
>
> base-commit: ee6050c8af96bba2f81e8b0793a1fc2f998fcd20
> --
> 2.25.1
>

2022-11-16 14:03:25

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH V1 1/1] mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout

On Wed, 16 Nov 2022 at 07:04, Louis Lu(TP) <[email protected]> wrote:
>
> Hi Uffe,
>
> May we check when this update patched will be phased in?

I realized that you probably want this to be applied as fix for
v6.1-rc, so I have moved the patch to the fixes branch. Moreover, I
will add a stable tag to it.

That means, the patch should show up in v6.1-rc6 next week and beyond
that, it should be tried to be picked up by maintainers of the
stable-kernels.

Kind regards
Uffe

>
> Thanks,
> Best Regards,
> Louis Lu
>
> -----Original Message-----
> From: Ulf Hansson <[email protected]>
> Sent: Tuesday, November 8, 2022 4:13 AM
> To: Chevron Li (WH) <[email protected]>
> Cc: [email protected]; [email protected]; [email protected]; Shaper Liu (WH) <[email protected]>; XiaoGuang Yu (WH) <[email protected]>; Shirley Her(SC) <[email protected]>; Louis Lu(TP) <[email protected]>
> Subject: Re: [PATCH V1 1/1] mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout
>
> On Fri, 4 Nov 2022 at 10:55, Chevron Li <[email protected]> wrote:
> >
> > The SD card is recognized failed sometimes when resume from suspend.
> > Because CD# debounce time too long then card present report wrong.
> > Finally, card is recognized failed.
> >
> > Signed-off-by: Chevron Li <[email protected]>
>
> Applied for next, thanks!
>
> Kind regards
> Uffe
>
>
> > ---
> > Change in V1:
> > Adjust bayhub chip setting for CD# debounce time to minimum value
> > ---
> > drivers/mmc/host/sdhci-pci-o2micro.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c
> > index ad457cd9cbaa..bca1d095b759 100644
> > --- a/drivers/mmc/host/sdhci-pci-o2micro.c
> > +++ b/drivers/mmc/host/sdhci-pci-o2micro.c
> > @@ -32,6 +32,7 @@
> > #define O2_SD_CAPS 0xE0
> > #define O2_SD_ADMA1 0xE2
> > #define O2_SD_ADMA2 0xE7
> > +#define O2_SD_MISC_CTRL2 0xF0
> > #define O2_SD_INF_MOD 0xF1
> > #define O2_SD_MISC_CTRL4 0xFC
> > #define O2_SD_MISC_CTRL 0x1C0
> > @@ -877,6 +878,12 @@ static int sdhci_pci_o2_probe(struct sdhci_pci_chip *chip)
> > /* Set Tuning Windows to 5 */
> > pci_write_config_byte(chip->pdev,
> > O2_SD_TUNING_CTRL, 0x55);
> > + //Adjust 1st and 2nd CD debounce time
> > + pci_read_config_dword(chip->pdev, O2_SD_MISC_CTRL2, &scratch_32);
> > + scratch_32 &= 0xFFE7FFFF;
> > + scratch_32 |= 0x00180000;
> > + pci_write_config_dword(chip->pdev, O2_SD_MISC_CTRL2, scratch_32);
> > + pci_write_config_dword(chip->pdev, O2_SD_DETECT_SETTING, 1);
> > /* Lock WP */
> > ret = pci_read_config_byte(chip->pdev,
> > O2_SD_LOCK_WP, &scratch);
> >
> > base-commit: ee6050c8af96bba2f81e8b0793a1fc2f998fcd20
> > --
> > 2.25.1
> >