diff mbox series

mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs

Message ID SEYPR01MB42219753E4388009470D958DD7FC2@SEYPR01MB4221.apcprd01.prod.exchangelabs.com
State New
Headers show
Series mmc: sdhci-of-dwcmshc: Use inverted-wp quirk for CV18xx and SG200x SoCs | expand

Commit Message

Haylen Chu May 31, 2024, 2:13 p.m. UTC
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 <heylenay@outlook.com>
---
 drivers/mmc/host/sdhci-of-dwcmshc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Adrian Hunter June 12, 2024, 8:11 a.m. UTC | #1
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 <heylenay@outlook.com>
> ---
>  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,
>  };
>
Jisheng Zhang June 13, 2024, 1:03 p.m. UTC | #2
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 <heylenay@outlook.com>
> ---
>  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
>
Jisheng Zhang June 13, 2024, 1:26 p.m. UTC | #3
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 <heylenay@outlook.com>
> > > ---
> > >  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
> > >
Haylen Chu June 18, 2024, 9:13 a.m. UTC | #4
On Thu, Jun 13, 2024 at 09:03:20PM +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.

Okay, I will fix it it in dts instead.

Thanks,
Haylen Chu
diff mbox series

Patch

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,
 };