2024-05-31 14:46:07

by Haylen Chu

[permalink] [raw]
Subject: [PATCH] mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs

MMC controller integrated in Sophgo CV18xx and SG200x SoCs has an
inverted write-protect flag, causing SDCards misdetected as read-only.
So set SDHCI_QURIK_INVERTED_WRITE_PROTECT to make write protection work
correctly.

Fixes: 017199c2849c ("mmc: sdhci-of-dwcmshc: Add support for Sophgo CV1800B and SG2002")
Signed-off-by: Haylen Chu <[email protected]>
---
drivers/mmc/host/sdhci-of-dwcmshc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
index 39edf04fedcf..62b7f28de54f 100644
--- a/drivers/mmc/host/sdhci-of-dwcmshc.c
+++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
@@ -962,7 +962,8 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_th1520_pdata = {

static const struct sdhci_pltfm_data sdhci_dwcmshc_cv18xx_pdata = {
.ops = &sdhci_dwcmshc_cv18xx_ops,
- .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN,
+ .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
+ SDHCI_QUIRK_INVERTED_WRITE_PROTECT,
.quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
};

--
2.45.1



2024-06-12 08:11:39

by Adrian Hunter

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs

On 31/05/24 17:13, Haylen Chu wrote:
> MMC controller integrated in Sophgo CV18xx and SG200x SoCs has an
> inverted write-protect flag, causing SDCards misdetected as read-only.

Is it the SDHCI_WRITE_PROTECT bit of the SDHCI_PRESENT_STATE
register that needs to be inverted?

> So set SDHCI_QURIK_INVERTED_WRITE_PROTECT to make write protection work
> correctly.
>
> Fixes: 017199c2849c ("mmc: sdhci-of-dwcmshc: Add support for Sophgo CV1800B and SG2002")
> Signed-off-by: Haylen Chu <[email protected]>
> ---
> drivers/mmc/host/sdhci-of-dwcmshc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
> index 39edf04fedcf..62b7f28de54f 100644
> --- a/drivers/mmc/host/sdhci-of-dwcmshc.c
> +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
> @@ -962,7 +962,8 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_th1520_pdata = {
>
> static const struct sdhci_pltfm_data sdhci_dwcmshc_cv18xx_pdata = {
> .ops = &sdhci_dwcmshc_cv18xx_ops,
> - .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN,
> + .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
> + SDHCI_QUIRK_INVERTED_WRITE_PROTECT,
> .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
> };
>


2024-06-13 13:17:30

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs

On Fri, May 31, 2024 at 02:13:47PM +0000, Haylen Chu wrote:
> MMC controller integrated in Sophgo CV18xx and SG200x SoCs has an
> inverted write-protect flag, causing SDCards misdetected as read-only.
> So set SDHCI_QURIK_INVERTED_WRITE_PROTECT to make write protection work
> correctly.

No, I would rather set cd-inverted property in dts.
>
> Fixes: 017199c2849c ("mmc: sdhci-of-dwcmshc: Add support for Sophgo CV1800B and SG2002")
> Signed-off-by: Haylen Chu <[email protected]>
> ---
> drivers/mmc/host/sdhci-of-dwcmshc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
> index 39edf04fedcf..62b7f28de54f 100644
> --- a/drivers/mmc/host/sdhci-of-dwcmshc.c
> +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
> @@ -962,7 +962,8 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_th1520_pdata = {
>
> static const struct sdhci_pltfm_data sdhci_dwcmshc_cv18xx_pdata = {
> .ops = &sdhci_dwcmshc_cv18xx_ops,
> - .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN,
> + .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
> + SDHCI_QUIRK_INVERTED_WRITE_PROTECT,
> .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
> };
>
> --
> 2.45.1
>

2024-06-13 13:30:01

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs

On Thu, Jun 13, 2024 at 09:03:24PM +0800, Jisheng Zhang wrote:
> On Fri, May 31, 2024 at 02:13:47PM +0000, Haylen Chu wrote:
> > MMC controller integrated in Sophgo CV18xx and SG200x SoCs has an
> > inverted write-protect flag, causing SDCards misdetected as read-only.
> > So set SDHCI_QURIK_INVERTED_WRITE_PROTECT to make write protection work
> > correctly.
>
> No, I would rather set cd-inverted property in dts.

wp-inverted

> >
> > Fixes: 017199c2849c ("mmc: sdhci-of-dwcmshc: Add support for Sophgo CV1800B and SG2002")
> > Signed-off-by: Haylen Chu <[email protected]>
> > ---
> > drivers/mmc/host/sdhci-of-dwcmshc.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
> > index 39edf04fedcf..62b7f28de54f 100644
> > --- a/drivers/mmc/host/sdhci-of-dwcmshc.c
> > +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
> > @@ -962,7 +962,8 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_th1520_pdata = {
> >
> > static const struct sdhci_pltfm_data sdhci_dwcmshc_cv18xx_pdata = {
> > .ops = &sdhci_dwcmshc_cv18xx_ops,
> > - .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN,
> > + .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
> > + SDHCI_QUIRK_INVERTED_WRITE_PROTECT,
> > .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
> > };
> >
> > --
> > 2.45.1
> >

2024-06-13 13:46:57

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH] mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs

On Thu, Jun 13, 2024 at 09:15:50PM +0800, Jisheng Zhang wrote:
> On Thu, Jun 13, 2024 at 09:03:24PM +0800, Jisheng Zhang wrote:
> > On Fri, May 31, 2024 at 02:13:47PM +0000, Haylen Chu wrote:
> > > MMC controller integrated in Sophgo CV18xx and SG200x SoCs has an
> > > inverted write-protect flag, causing SDCards misdetected as read-only.
> > > So set SDHCI_QURIK_INVERTED_WRITE_PROTECT to make write protection work
> > > correctly.
> >
> > No, I would rather set cd-inverted property in dts.
>
> wp-inverted

hmm, if I read the SCH correctly, there's no wp pin at all, so
disable-wp is better

>
> > >
> > > Fixes: 017199c2849c ("mmc: sdhci-of-dwcmshc: Add support for Sophgo CV1800B and SG2002")
> > > Signed-off-by: Haylen Chu <[email protected]>
> > > ---
> > > drivers/mmc/host/sdhci-of-dwcmshc.c | 3 ++-
> > > 1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
> > > index 39edf04fedcf..62b7f28de54f 100644
> > > --- a/drivers/mmc/host/sdhci-of-dwcmshc.c
> > > +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
> > > @@ -962,7 +962,8 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_th1520_pdata = {
> > >
> > > static const struct sdhci_pltfm_data sdhci_dwcmshc_cv18xx_pdata = {
> > > .ops = &sdhci_dwcmshc_cv18xx_ops,
> > > - .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN,
> > > + .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
> > > + SDHCI_QUIRK_INVERTED_WRITE_PROTECT,
> > > .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
> > > };
> > >
> > > --
> > > 2.45.1
> > >