RE: [PATCH] mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450
From: Bough Chen
Date: Tue Aug 15 2023 - 21:22:39 EST
> -----Original Message-----
> From: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Sent: 2023年8月15日 20:08
> To: Giulio Benetti <giulio.benetti@xxxxxxxxxxxxxxxxxxxxxx>; Bough Chen
> <haibo.chen@xxxxxxx>; Ulf Hansson <ulf.hansson@xxxxxxxxxx>; Shawn Guo
> <shawnguo@xxxxxxxxxx>; Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>; Fabio
> Estevam <festevam@xxxxxxxxx>; dl-linux-imx <linux-imx@xxxxxxx>
> Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>;
> linux-mmc@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; Jim Reinhart <jimr@xxxxxxxxxx>; James Autry
> <jautry@xxxxxxxxxx>; Matthew Maron <matthewm@xxxxxxxxxx>
> Subject: Re: [PATCH] mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450
>
> On 12/08/23 00:48, Giulio Benetti wrote:
> > Errata ERR010450 only shows up if voltage is 1.8V, but if the device
> > is supplied by 3v3 the errata can be ignored. So let's check for if
> > quirk SDHCI_QUIRK2_NO_1_8_V is defined or not before limiting the
> frequency.
> >
> > Sponsored by: Tekvox Inc.
> > Cc: Jim Reinhart <jimr@xxxxxxxxxx>
> > Cc: James Autry <jautry@xxxxxxxxxx>
> > Cc: Matthew Maron <matthewm@xxxxxxxxxx>
> > Signed-off-by: Giulio Benetti <giulio.benetti@xxxxxxxxxxxxxxxxxxxxxx>
>
> Haibo Chen, can we get an Acked-by from you?
Sorry for the delay, I just forget this mail.
I just double check the Errata doc, yes, the limitation is only for 1.8v I/O timing.
So
Acked-by: Haibo Chen <haibo.chen@xxxxxxx>
Thanks
Best Regards
Haibo Chen.
>
> > ---
> > drivers/mmc/host/sdhci-esdhc-imx.c | 7 ++++---
> > 1 file changed, 4 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c
> > b/drivers/mmc/host/sdhci-esdhc-imx.c
> > index eebf94604a7f..cddecc1e1ac2 100644
> > --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> > @@ -171,8 +171,8 @@
> > #define ESDHC_FLAG_HS400 BIT(9)
> > /*
> > * The IP has errata ERR010450
> > - * uSDHC: Due to the I/O timing limit, for SDR mode, SD card clock
> > can't
> > - * exceed 150MHz, for DDR mode, SD card clock can't exceed 45MHz.
> > + * uSDHC: At 1.8V due to the I/O timing limit, for SDR mode, SD card
> > + * clock can't exceed 150MHz, for DDR mode, SD card clock can't exceed
> 45MHz.
> > */
> > #define ESDHC_FLAG_ERR010450 BIT(10)
> > /* The IP supports HS400ES mode */
> > @@ -961,7 +961,8 @@ static inline void esdhc_pltfm_set_clock(struct
> sdhci_host *host,
> > | ESDHC_CLOCK_MASK);
> > sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
> >
> > - if (imx_data->socdata->flags & ESDHC_FLAG_ERR010450) {
> > + if ((imx_data->socdata->flags & ESDHC_FLAG_ERR010450) &&
> > + (!(host->quirks2 & SDHCI_QUIRK2_NO_1_8_V))) {
> > unsigned int max_clock;
> >
> > max_clock = imx_data->is_ddr ? 45000000 : 150000000;