diff mbox series

[1/3] mmc: sdhi: disallow HS400 for M3-W ES1.2 and V3H

Message ID 20190604151530.7023-2-wsa+renesas@sang-engineering.com (mailing list archive)
State New, archived
Headers show
Series mmc: sdhi: improve HS400 quirk handling | expand

Commit Message

Wolfram Sang June 4, 2019, 3:15 p.m. UTC
Our HW engineers informed us that HS400 is not working on these SoC
revisions.

Fixes: 0f4e2054c971 ("mmc: renesas_sdhi: disable HS400 on H3 ES1.x and M3-W ES1.[012]")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---

This one should go back to stable.

 drivers/mmc/host/renesas_sdhi_core.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Geert Uytterhoeven June 4, 2019, 3:28 p.m. UTC | #1
Hi Wolfram,

On Tue, Jun 4, 2019 at 5:17 PM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
> Our HW engineers informed us that HS400 is not working on these SoC
> revisions.
>
> Fixes: 0f4e2054c971 ("mmc: renesas_sdhi: disable HS400 on H3 ES1.x and M3-W ES1.[012]")
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>

> --- a/drivers/mmc/host/renesas_sdhi_core.c
> +++ b/drivers/mmc/host/renesas_sdhi_core.c
> @@ -620,11 +620,17 @@ static const struct renesas_sdhi_quirks sdhi_quirks_h3_es2 = {
>         .hs400_4taps = true,
>  };
>
> +static const struct renesas_sdhi_quirks sdhi_quirks_nohs400 = {
> +       .hs400_disabled = true,
> +};
> +
>  static const struct soc_device_attribute sdhi_quirks_match[]  = {
>         { .soc_id = "r8a7795", .revision = "ES1.*", .data = &sdhi_quirks_h3_m3w_es1 },
>         { .soc_id = "r8a7795", .revision = "ES2.0", .data = &sdhi_quirks_h3_es2 },
>         { .soc_id = "r8a7796", .revision = "ES1.0", .data = &sdhi_quirks_h3_m3w_es1 },
>         { .soc_id = "r8a7796", .revision = "ES1.1", .data = &sdhi_quirks_h3_m3w_es1 },
> +       { .soc_id = "r8a7796", .revision = "ES1.2", .data = &sdhi_quirks_h3_m3w_es1 },

I think the above 3 lines can be combined in:

     { .soc_id = "r8a7796", .revision = "ES1.[012]", .data =
&sdhi_quirks_h3_m3w_es1 },

Or do you prefer separate lines for easier grepping?

Gr{oetje,eeting}s,

                        Geert
Wolfram Sang June 4, 2019, 3:41 p.m. UTC | #2
> I think the above 3 lines can be combined in:
> 
>      { .soc_id = "r8a7796", .revision = "ES1.[012]", .data =
> &sdhi_quirks_h3_m3w_es1 },
> 
> Or do you prefer separate lines for easier grepping?

No, I just forgot one can do this :) Will wait a little for further
comments and then fix. Thanks!
Fabrizio Castro June 5, 2019, 8:31 a.m. UTC | #3
Hello Wolfram,

Thank you for your patch!

> From: linux-renesas-soc-owner@vger.kernel.org <linux-renesas-soc-owner@vger.kernel.org> On Behalf Of Wolfram Sang
> Sent: 04 June 2019 16:15
> Subject: [PATCH 1/3] mmc: sdhi: disallow HS400 for M3-W ES1.2 and V3H
> 
> Our HW engineers informed us that HS400 is not working on these SoC
> revisions.
> 
> Fixes: 0f4e2054c971 ("mmc: renesas_sdhi: disable HS400 on H3 ES1.x and M3-W ES1.[012]")
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
> 
> This one should go back to stable.
> 
>  drivers/mmc/host/renesas_sdhi_core.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c
> index db73f9f1b186..e98ba6cf6c13 100644
> --- a/drivers/mmc/host/renesas_sdhi_core.c
> +++ b/drivers/mmc/host/renesas_sdhi_core.c
> @@ -620,11 +620,17 @@ static const struct renesas_sdhi_quirks sdhi_quirks_h3_es2 = {
>  	.hs400_4taps = true,
>  };
> 
> +static const struct renesas_sdhi_quirks sdhi_quirks_nohs400 = {
> +	.hs400_disabled = true,
> +};
> +
>  static const struct soc_device_attribute sdhi_quirks_match[]  = {
>  	{ .soc_id = "r8a7795", .revision = "ES1.*", .data = &sdhi_quirks_h3_m3w_es1 },
>  	{ .soc_id = "r8a7795", .revision = "ES2.0", .data = &sdhi_quirks_h3_es2 },
>  	{ .soc_id = "r8a7796", .revision = "ES1.0", .data = &sdhi_quirks_h3_m3w_es1 },
>  	{ .soc_id = "r8a7796", .revision = "ES1.1", .data = &sdhi_quirks_h3_m3w_es1 },
> +	{ .soc_id = "r8a7796", .revision = "ES1.2", .data = &sdhi_quirks_h3_m3w_es1 },

Can we actually detect E1.2 on the M3-W? My understanding is that the content of the
PRR is the same for 1.1 and 1.2 (Geert, could you please jump in?).
I am saying this because I am using an RZ/G2M (r8a774a1), revision 1.2, that it's reporting
itself as 1.1.
Also, the r8a774a1 and r8a7796 are identical (even revision-wise), so I guess we could
add r8a774a1 to the pile while at it?

Thanks,
Fab

> +	{ .soc_id = "r8a77980", .data = &sdhi_quirks_nohs400 },
>  	{ /* Sentinel. */ },
>  };
> 
> --
> 2.11.0
Geert Uytterhoeven June 5, 2019, 8:39 a.m. UTC | #4
Hi Fabrizio,

On Wed, Jun 5, 2019 at 10:31 AM Fabrizio Castro
<fabrizio.castro@bp.renesas.com> wrote:
> > From: linux-renesas-soc-owner@vger.kernel.org <linux-renesas-soc-owner@vger.kernel.org> On Behalf Of Wolfram Sang
> > Sent: 04 June 2019 16:15
> > Subject: [PATCH 1/3] mmc: sdhi: disallow HS400 for M3-W ES1.2 and V3H
> >
> > Our HW engineers informed us that HS400 is not working on these SoC
> > revisions.
> >
> > Fixes: 0f4e2054c971 ("mmc: renesas_sdhi: disable HS400 on H3 ES1.x and M3-W ES1.[012]")
> > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> > ---
> >
> > This one should go back to stable.
> >
> >  drivers/mmc/host/renesas_sdhi_core.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c
> > index db73f9f1b186..e98ba6cf6c13 100644
> > --- a/drivers/mmc/host/renesas_sdhi_core.c
> > +++ b/drivers/mmc/host/renesas_sdhi_core.c
> > @@ -620,11 +620,17 @@ static const struct renesas_sdhi_quirks sdhi_quirks_h3_es2 = {
> >       .hs400_4taps = true,
> >  };
> >
> > +static const struct renesas_sdhi_quirks sdhi_quirks_nohs400 = {
> > +     .hs400_disabled = true,
> > +};
> > +
> >  static const struct soc_device_attribute sdhi_quirks_match[]  = {
> >       { .soc_id = "r8a7795", .revision = "ES1.*", .data = &sdhi_quirks_h3_m3w_es1 },
> >       { .soc_id = "r8a7795", .revision = "ES2.0", .data = &sdhi_quirks_h3_es2 },
> >       { .soc_id = "r8a7796", .revision = "ES1.0", .data = &sdhi_quirks_h3_m3w_es1 },
> >       { .soc_id = "r8a7796", .revision = "ES1.1", .data = &sdhi_quirks_h3_m3w_es1 },
> > +     { .soc_id = "r8a7796", .revision = "ES1.2", .data = &sdhi_quirks_h3_m3w_es1 },
>
> Can we actually detect E1.2 on the M3-W? My understanding is that the content of the
> PRR is the same for 1.1 and 1.2 (Geert, could you please jump in?).

Indeed, we cannot detect ES1.2 from the PRR, so technically it is already
covered by the existing check.
However, one day we might find some other way to differentiate between
M3-W ES1.1 and ES1.2 at runtime, and a need or other good reason to
enhance renesas_soc_init() to use that logic.

> Also, the r8a774a1 and r8a7796 are identical (even revision-wise), so I guess we could
> add r8a774a1 to the pile while at it?

Yes, we should.

Gr{oetje,eeting}s,

                        Geert
diff mbox series

Patch

diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c
index db73f9f1b186..e98ba6cf6c13 100644
--- a/drivers/mmc/host/renesas_sdhi_core.c
+++ b/drivers/mmc/host/renesas_sdhi_core.c
@@ -620,11 +620,17 @@  static const struct renesas_sdhi_quirks sdhi_quirks_h3_es2 = {
 	.hs400_4taps = true,
 };
 
+static const struct renesas_sdhi_quirks sdhi_quirks_nohs400 = {
+	.hs400_disabled = true,
+};
+
 static const struct soc_device_attribute sdhi_quirks_match[]  = {
 	{ .soc_id = "r8a7795", .revision = "ES1.*", .data = &sdhi_quirks_h3_m3w_es1 },
 	{ .soc_id = "r8a7795", .revision = "ES2.0", .data = &sdhi_quirks_h3_es2 },
 	{ .soc_id = "r8a7796", .revision = "ES1.0", .data = &sdhi_quirks_h3_m3w_es1 },
 	{ .soc_id = "r8a7796", .revision = "ES1.1", .data = &sdhi_quirks_h3_m3w_es1 },
+	{ .soc_id = "r8a7796", .revision = "ES1.2", .data = &sdhi_quirks_h3_m3w_es1 },
+	{ .soc_id = "r8a77980", .data = &sdhi_quirks_nohs400 },
 	{ /* Sentinel. */ },
 };