* [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo
@ 2016-05-12 11:52 Stefan Christ
2016-05-23 9:57 ` Haibo Chen
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Christ @ 2016-05-12 11:52 UTC (permalink / raw)
To: adrian.hunter, linux-mmc; +Cc: aisheng.dong, festevam
The ROM Code of i.MX6 Quad/Dual uses the MMC interfaces differently than
the i.MX6 Solo/DualLite when it loads the bootloader from the interface:
Register DLL_CTRL(0x60) Bit 25 FBCLK_SEL (0x48)
Quad: 0x0 0
DualLite: 0x01000021 1
Since the linux kernel or bootloader driver doesn't reset all registers,
the MMC interface is in an inconsistent state, which leads to boot
failures for some eMMC devices on the i.MX6 DualLite SoC. The errors
look like:
mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
mmcblk1: retrying using single block read
mmcblk1: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card status 0x0
blk_update_request: I/O error, dev mmcblk1, sector 2
mmcblk1: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card status 0x0
blk_update_request: I/O error, dev mmcblk1, sector 3
The register DLL_CTRL is already reset. Reset also the bit FBCLK_SEL.
Signed-off-by: Stefan Christ <s.christ@phytec.de>
---
Hi,
this patch is a follow up to
http://www.spinics.net/lists/linux-mmc/msg36331.html
mmc: sdhci-esdhci-imx: disable DLL delay line settings explicitly
Disable DLL delay line settings explicitly during driver initialization
in case ROM/uBoot had set an invalid delay.
e.g. MX6DL ROM has set the default delay line(DLLCTRL) to 0x1000021,
the uSDHC clock timing will become marginal when works on DDR mode
due to default delay and will possibly see CRC errors in case the board
is not perfectly designed on the eMMC chip layout.
Signed-off-by: Dong Aisheng <aisheng.dong@xxxxxxx>
It doesn't apply cleanly on Linus master branch, since the above patch is
missing.
Mit freundlichen Grüßen / Kind regards,
Stefan Christ
---
drivers/mmc/host/sdhci-esdhc-imx.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 4490808..9101556 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -1191,6 +1191,10 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
/* disable DLL_CTRL delay line settings */
writel(0x0, host->ioaddr + ESDHC_DLL_CTRL);
+
+ /* reset bit FBCLK_SEL for i.MX6 Solo/DualLite ROM code */
+ writel(readl(host->ioaddr + ESDHC_MIX_CTRL) & ~BIT(25),
+ host->ioaddr + ESDHC_MIX_CTRL);
}
if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING)
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* RE: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo 2016-05-12 11:52 [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo Stefan Christ @ 2016-05-23 9:57 ` Haibo Chen 2016-06-20 7:56 ` Stefan Christ 0 siblings, 1 reply; 4+ messages in thread From: Haibo Chen @ 2016-05-23 9:57 UTC (permalink / raw) To: Stefan Christ, adrian.hunter@intel.com, linux-mmc@vger.kernel.org Cc: aisheng.dong@freescale.com, festevam@gmail.com, Aisheng Dong > -----Original Message----- > From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc- > owner@vger.kernel.org] On Behalf Of Stefan Christ > Sent: Thursday, May 12, 2016 7:53 PM > To: adrian.hunter@intel.com; linux-mmc@vger.kernel.org > Cc: aisheng.dong@freescale.com; festevam@gmail.com > Subject: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 > DualLite/Solo > > The ROM Code of i.MX6 Quad/Dual uses the MMC interfaces differently than > the i.MX6 Solo/DualLite when it loads the bootloader from the interface: > > Register DLL_CTRL(0x60) Bit 25 FBCLK_SEL (0x48) > Quad: 0x0 0 > DualLite: 0x01000021 1 > > Since the linux kernel or bootloader driver doesn't reset all registers, the MMC > interface is in an inconsistent state, which leads to boot failures for some > eMMC devices on the i.MX6 DualLite SoC. The errors look like: > > mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card > status 0xb00 > mmcblk1: retrying using single block read > mmcblk1: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card > status 0x0 > blk_update_request: I/O error, dev mmcblk1, sector 2 > mmcblk1: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card > status 0x0 > blk_update_request: I/O error, dev mmcblk1, sector 3 > > The register DLL_CTRL is already reset. Reset also the bit FBCLK_SEL. > > Signed-off-by: Stefan Christ <s.christ@phytec.de> > --- > Hi, > > this patch is a follow up to > > http://www.spinics.net/lists/linux-mmc/msg36331.html Hi Stefan, Aisheng also take this into consideration, please refer to http://www.spinics.net/lists/linux-mmc/msg36940.html Seems this patch still not be in Ulf's branch. Regards, Haibo > > mmc: sdhci-esdhci-imx: disable DLL delay line settings explicitly > > Disable DLL delay line settings explicitly during driver initialization > in case ROM/uBoot had set an invalid delay. > e.g. MX6DL ROM has set the default delay line(DLLCTRL) to 0x1000021, > the uSDHC clock timing will become marginal when works on DDR mode > due to default delay and will possibly see CRC errors in case the board > is not perfectly designed on the eMMC chip layout. > > Signed-off-by: Dong Aisheng <aisheng.dong@xxxxxxx> > > It doesn't apply cleanly on Linus master branch, since the above patch is missing. > > Mit freundlichen Grüßen / Kind regards, > Stefan Christ > --- > drivers/mmc/host/sdhci-esdhc-imx.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci- > esdhc-imx.c > index 4490808..9101556 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -1191,6 +1191,10 @@ static int sdhci_esdhc_imx_probe(struct > platform_device *pdev) > > /* disable DLL_CTRL delay line settings */ > writel(0x0, host->ioaddr + ESDHC_DLL_CTRL); > + > + /* reset bit FBCLK_SEL for i.MX6 Solo/DualLite ROM code */ > + writel(readl(host->ioaddr + ESDHC_MIX_CTRL) & ~BIT(25), > + host->ioaddr + ESDHC_MIX_CTRL); > } > > if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) > -- > 1.9.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the > body of a message to majordomo@vger.kernel.org More majordomo info at > http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo 2016-05-23 9:57 ` Haibo Chen @ 2016-06-20 7:56 ` Stefan Christ 2016-06-20 10:16 ` Dong Aisheng 0 siblings, 1 reply; 4+ messages in thread From: Stefan Christ @ 2016-06-20 7:56 UTC (permalink / raw) To: Haibo Chen Cc: adrian.hunter@intel.com, linux-mmc@vger.kernel.org, aisheng.dong@freescale.com, festevam@gmail.com, Aisheng Dong Hi Haibo, On Mon, May 23, 2016 at 09:57:00AM +0000, Haibo Chen wrote: > > -----Original Message----- > > From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc- > > owner@vger.kernel.org] On Behalf Of Stefan Christ > > Sent: Thursday, May 12, 2016 7:53 PM > > To: adrian.hunter@intel.com; linux-mmc@vger.kernel.org > > Cc: aisheng.dong@freescale.com; festevam@gmail.com > > Subject: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 > > DualLite/Solo > > > > The ROM Code of i.MX6 Quad/Dual uses the MMC interfaces differently than > > the i.MX6 Solo/DualLite when it loads the bootloader from the interface: > > > > Register DLL_CTRL(0x60) Bit 25 FBCLK_SEL (0x48) > > Quad: 0x0 0 > > DualLite: 0x01000021 1 > > > > Since the linux kernel or bootloader driver doesn't reset all registers, the MMC > > interface is in an inconsistent state, which leads to boot failures for some > > eMMC devices on the i.MX6 DualLite SoC. The errors look like: > > > > mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card > > status 0xb00 > > mmcblk1: retrying using single block read > > mmcblk1: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card > > status 0x0 > > blk_update_request: I/O error, dev mmcblk1, sector 2 > > mmcblk1: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card > > status 0x0 > > blk_update_request: I/O error, dev mmcblk1, sector 3 > > > > The register DLL_CTRL is already reset. Reset also the bit FBCLK_SEL. > > > > Signed-off-by: Stefan Christ <s.christ@phytec.de> > > --- > > Hi, > > > > this patch is a follow up to > > > > http://www.spinics.net/lists/linux-mmc/msg36331.html > > Hi Stefan, > Aisheng also take this into consideration, please refer to > > http://www.spinics.net/lists/linux-mmc/msg36940.html > > Seems this patch still not be in Ulf's branch. > > Regards, > Haibo Please correct me if I'm wrong, but I don't see any activity about this issue on the mailing list. Is it possible to pick Aisheng's and my patch without waiting for the whole series to be reworked? Mit freundlichen Grüßen / Kind regards, Stefan Christ > > > > mmc: sdhci-esdhci-imx: disable DLL delay line settings explicitly > > > > Disable DLL delay line settings explicitly during driver initialization > > in case ROM/uBoot had set an invalid delay. > > e.g. MX6DL ROM has set the default delay line(DLLCTRL) to 0x1000021, > > the uSDHC clock timing will become marginal when works on DDR mode > > due to default delay and will possibly see CRC errors in case the board > > is not perfectly designed on the eMMC chip layout. > > > > Signed-off-by: Dong Aisheng <aisheng.dong@xxxxxxx> > > > > It doesn't apply cleanly on Linus master branch, since the above patch is missing. > > > > Mit freundlichen Grüßen / Kind regards, > > Stefan Christ > > --- > > drivers/mmc/host/sdhci-esdhc-imx.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci- > > esdhc-imx.c > > index 4490808..9101556 100644 > > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > > @@ -1191,6 +1191,10 @@ static int sdhci_esdhc_imx_probe(struct > > platform_device *pdev) > > > > /* disable DLL_CTRL delay line settings */ > > writel(0x0, host->ioaddr + ESDHC_DLL_CTRL); > > + > > + /* reset bit FBCLK_SEL for i.MX6 Solo/DualLite ROM code */ > > + writel(readl(host->ioaddr + ESDHC_MIX_CTRL) & ~BIT(25), > > + host->ioaddr + ESDHC_MIX_CTRL); > > } > > > > if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) > > -- > > 1.9.1 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the > > body of a message to majordomo@vger.kernel.org More majordomo info at > > http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo 2016-06-20 7:56 ` Stefan Christ @ 2016-06-20 10:16 ` Dong Aisheng 0 siblings, 0 replies; 4+ messages in thread From: Dong Aisheng @ 2016-06-20 10:16 UTC (permalink / raw) To: Stefan Christ Cc: Haibo Chen, adrian.hunter@intel.com, linux-mmc@vger.kernel.org, aisheng.dong@freescale.com, festevam@gmail.com, Aisheng Dong Hi Stefan, On Mon, Jun 20, 2016 at 3:56 PM, Stefan Christ <s.christ@phytec.de> wrote: > Hi Haibo, > > On Mon, May 23, 2016 at 09:57:00AM +0000, Haibo Chen wrote: >> > -----Original Message----- >> > From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc- >> > owner@vger.kernel.org] On Behalf Of Stefan Christ >> > Sent: Thursday, May 12, 2016 7:53 PM >> > To: adrian.hunter@intel.com; linux-mmc@vger.kernel.org >> > Cc: aisheng.dong@freescale.com; festevam@gmail.com >> > Subject: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 >> > DualLite/Solo >> > >> > The ROM Code of i.MX6 Quad/Dual uses the MMC interfaces differently than >> > the i.MX6 Solo/DualLite when it loads the bootloader from the interface: >> > >> > Register DLL_CTRL(0x60) Bit 25 FBCLK_SEL (0x48) >> > Quad: 0x0 0 >> > DualLite: 0x01000021 1 >> > >> > Since the linux kernel or bootloader driver doesn't reset all registers, the MMC >> > interface is in an inconsistent state, which leads to boot failures for some >> > eMMC devices on the i.MX6 DualLite SoC. The errors look like: >> > >> > mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card >> > status 0xb00 >> > mmcblk1: retrying using single block read >> > mmcblk1: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card >> > status 0x0 >> > blk_update_request: I/O error, dev mmcblk1, sector 2 >> > mmcblk1: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card >> > status 0x0 >> > blk_update_request: I/O error, dev mmcblk1, sector 3 >> > >> > The register DLL_CTRL is already reset. Reset also the bit FBCLK_SEL. >> > >> > Signed-off-by: Stefan Christ <s.christ@phytec.de> >> > --- >> > Hi, >> > >> > this patch is a follow up to >> > >> > http://www.spinics.net/lists/linux-mmc/msg36331.html >> >> Hi Stefan, >> Aisheng also take this into consideration, please refer to >> >> http://www.spinics.net/lists/linux-mmc/msg36940.html >> >> Seems this patch still not be in Ulf's branch. >> >> Regards, >> Haibo > > Please correct me if I'm wrong, but I don't see any activity about this issue > on the mailing list. Is it possible to pick Aisheng's and my patch without > waiting for the whole series to be reworked? > Sorry for the delay. I'm busy with other issues and will send V2 soon this days. Most of them already got ack from Andrian. Suppose they will be in soon. Regards Dong Aisheng > Mit freundlichen Grüßen / Kind regards, > Stefan Christ > >> > >> > mmc: sdhci-esdhci-imx: disable DLL delay line settings explicitly >> > >> > Disable DLL delay line settings explicitly during driver initialization >> > in case ROM/uBoot had set an invalid delay. >> > e.g. MX6DL ROM has set the default delay line(DLLCTRL) to 0x1000021, >> > the uSDHC clock timing will become marginal when works on DDR mode >> > due to default delay and will possibly see CRC errors in case the board >> > is not perfectly designed on the eMMC chip layout. >> > >> > Signed-off-by: Dong Aisheng <aisheng.dong@xxxxxxx> >> > >> > It doesn't apply cleanly on Linus master branch, since the above patch is missing. >> > >> > Mit freundlichen Grüßen / Kind regards, >> > Stefan Christ >> > --- >> > drivers/mmc/host/sdhci-esdhc-imx.c | 4 ++++ >> > 1 file changed, 4 insertions(+) >> > >> > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci- >> > esdhc-imx.c >> > index 4490808..9101556 100644 >> > --- a/drivers/mmc/host/sdhci-esdhc-imx.c >> > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c >> > @@ -1191,6 +1191,10 @@ static int sdhci_esdhc_imx_probe(struct >> > platform_device *pdev) >> > >> > /* disable DLL_CTRL delay line settings */ >> > writel(0x0, host->ioaddr + ESDHC_DLL_CTRL); >> > + >> > + /* reset bit FBCLK_SEL for i.MX6 Solo/DualLite ROM code */ >> > + writel(readl(host->ioaddr + ESDHC_MIX_CTRL) & ~BIT(25), >> > + host->ioaddr + ESDHC_MIX_CTRL); >> > } >> > >> > if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING) >> > -- >> > 1.9.1 >> > >> > -- >> > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the >> > body of a message to majordomo@vger.kernel.org More majordomo info at >> > http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-06-20 10:16 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-05-12 11:52 [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo Stefan Christ 2016-05-23 9:57 ` Haibo Chen 2016-06-20 7:56 ` Stefan Christ 2016-06-20 10:16 ` Dong Aisheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox