From: Ulf Hansson <ulf.hansson@linaro.org> To: BOUGH CHEN <haibo.chen@nxp.com> Cc: "mark.rutland@arm.com" <mark.rutland@arm.com>, "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, "s.hauer@pengutronix.de" <s.hauer@pengutronix.de>, "linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>, "adrian.hunter@intel.com" <adrian.hunter@intel.com>, "rmk+kernel@armlinux.org.uk" <rmk+kernel@armlinux.org.uk>, "robh+dt@kernel.org" <robh+dt@kernel.org>, dl-linux-imx <linux-imx@nxp.com>, "kernel@pengutronix.de" <kernel@pengutronix.de>, Fabio Estevam <fabio.estevam@nxp.com>, "shawnguo@kernel.org" <shawnguo@kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v2 2/3] mmc: sdhci-esdhc-imx: add SD clock limitation for imx6ull Date: Mon, 14 Jan 2019 12:43:58 +0100 [thread overview] Message-ID: <CAPDyKFpM3O=Ye6K2cG4b0=E6EXt7HhUYs6HNhomf=azayRL0FA@mail.gmail.com> (raw) In-Reply-To: <20181228033323.32308-2-haibo.chen@nxp.com> On Fri, 28 Dec 2018 at 04:26, BOUGH CHEN <haibo.chen@nxp.com> wrote: > > i.MX6ULL has errata ERR010450, point out that due to SOC I/O > timing limitation, for eMMC HS200 and SD/SDIO 3.0 SDR104, the > clock rate can't exceed 150MHz. And for eMMC DDR52 and SD/SDIO > DDR50 mode, the clock rate can't exceed 45MHz. > > This patch add this limit for imx6ull. > > Signed-off-by: Haibo Chen <haibo.chen@nxp.com> > Acked-by: Adrian Hunter <adrian.hunter@intel.com> Applied for next (I amended the patch by fixing a trivial conflict and made the struct "const"). Kind regards Uffe > --- > drivers/mmc/host/sdhci-esdhc-imx.c | 21 ++++++++++++++++++++- > 1 file changed, 20 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c > index 7cfcc8618e45..e1d9b2985979 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -138,7 +138,11 @@ > #define ESDHC_FLAG_HS200 BIT(8) > /* The IP supports HS400 mode */ > #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. > + */ > +#define ESDHC_FLAG_ERR010450 BIT(10) > /* A clock frequency higher than this rate requires strobe dll control */ > #define ESDHC_STROBE_DLL_CLK_FREQ 100000000 > > @@ -177,6 +181,12 @@ static struct esdhc_soc_data usdhc_imx6sx_data = { > | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200, > }; > > +static struct esdhc_soc_data usdhc_imx6ull_data = { > + .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING > + | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200 > + | ESDHC_FLAG_ERR010450, > +}; > + > static struct esdhc_soc_data usdhc_imx7d_data = { > .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING > | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200 > @@ -227,6 +237,7 @@ static const struct of_device_id imx_esdhc_dt_ids[] = { > { .compatible = "fsl,imx6sx-usdhc", .data = &usdhc_imx6sx_data, }, > { .compatible = "fsl,imx6sl-usdhc", .data = &usdhc_imx6sl_data, }, > { .compatible = "fsl,imx6q-usdhc", .data = &usdhc_imx6q_data, }, > + { .compatible = "fsl,imx6ull-usdhc", .data = &usdhc_imx6ull_data, }, > { .compatible = "fsl,imx7d-usdhc", .data = &usdhc_imx7d_data, }, > { /* sentinel */ } > }; > @@ -733,6 +744,14 @@ 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) { > + unsigned int max_clock; > + > + max_clock = imx_data->is_ddr ? 45000000 : 150000000; > + > + clock = min(clock, max_clock); > + } > + > while (host_clock / (16 * pre_div * ddr_pre_div) > clock && > pre_div < 256) > pre_div *= 2; > -- > 2.17.1 >
WARNING: multiple messages have this Message-ID (diff)
From: Ulf Hansson <ulf.hansson@linaro.org> To: BOUGH CHEN <haibo.chen@nxp.com> Cc: "mark.rutland@arm.com" <mark.rutland@arm.com>, "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, "s.hauer@pengutronix.de" <s.hauer@pengutronix.de>, "linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>, "adrian.hunter@intel.com" <adrian.hunter@intel.com>, "rmk+kernel@armlinux.org.uk" <rmk+kernel@armlinux.org.uk>, "robh+dt@kernel.org" <robh+dt@kernel.org>, dl-linux-imx <linux-imx@nxp.com>, "kernel@pengutronix.de" <kernel@pengutronix.de>, Fabio Estevam <fabio.estevam@nxp.com>, "shawnguo@kernel.org" <shawnguo@kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v2 2/3] mmc: sdhci-esdhc-imx: add SD clock limitation for imx6ull Date: Mon, 14 Jan 2019 12:43:58 +0100 [thread overview] Message-ID: <CAPDyKFpM3O=Ye6K2cG4b0=E6EXt7HhUYs6HNhomf=azayRL0FA@mail.gmail.com> (raw) In-Reply-To: <20181228033323.32308-2-haibo.chen@nxp.com> On Fri, 28 Dec 2018 at 04:26, BOUGH CHEN <haibo.chen@nxp.com> wrote: > > i.MX6ULL has errata ERR010450, point out that due to SOC I/O > timing limitation, for eMMC HS200 and SD/SDIO 3.0 SDR104, the > clock rate can't exceed 150MHz. And for eMMC DDR52 and SD/SDIO > DDR50 mode, the clock rate can't exceed 45MHz. > > This patch add this limit for imx6ull. > > Signed-off-by: Haibo Chen <haibo.chen@nxp.com> > Acked-by: Adrian Hunter <adrian.hunter@intel.com> Applied for next (I amended the patch by fixing a trivial conflict and made the struct "const"). Kind regards Uffe > --- > drivers/mmc/host/sdhci-esdhc-imx.c | 21 ++++++++++++++++++++- > 1 file changed, 20 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c > index 7cfcc8618e45..e1d9b2985979 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -138,7 +138,11 @@ > #define ESDHC_FLAG_HS200 BIT(8) > /* The IP supports HS400 mode */ > #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. > + */ > +#define ESDHC_FLAG_ERR010450 BIT(10) > /* A clock frequency higher than this rate requires strobe dll control */ > #define ESDHC_STROBE_DLL_CLK_FREQ 100000000 > > @@ -177,6 +181,12 @@ static struct esdhc_soc_data usdhc_imx6sx_data = { > | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200, > }; > > +static struct esdhc_soc_data usdhc_imx6ull_data = { > + .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING > + | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200 > + | ESDHC_FLAG_ERR010450, > +}; > + > static struct esdhc_soc_data usdhc_imx7d_data = { > .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING > | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200 > @@ -227,6 +237,7 @@ static const struct of_device_id imx_esdhc_dt_ids[] = { > { .compatible = "fsl,imx6sx-usdhc", .data = &usdhc_imx6sx_data, }, > { .compatible = "fsl,imx6sl-usdhc", .data = &usdhc_imx6sl_data, }, > { .compatible = "fsl,imx6q-usdhc", .data = &usdhc_imx6q_data, }, > + { .compatible = "fsl,imx6ull-usdhc", .data = &usdhc_imx6ull_data, }, > { .compatible = "fsl,imx7d-usdhc", .data = &usdhc_imx7d_data, }, > { /* sentinel */ } > }; > @@ -733,6 +744,14 @@ 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) { > + unsigned int max_clock; > + > + max_clock = imx_data->is_ddr ? 45000000 : 150000000; > + > + clock = min(clock, max_clock); > + } > + > while (host_clock / (16 * pre_div * ddr_pre_div) > clock && > pre_div < 256) > pre_div *= 2; > -- > 2.17.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-01-14 11:43 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-12-28 3:26 [PATCH v2 1/3] dt-bindings: mmc: fsl-imx-esdhc: add imx6ull compatible string BOUGH CHEN 2018-12-28 3:26 ` BOUGH CHEN 2018-12-28 3:26 ` [PATCH v2 2/3] mmc: sdhci-esdhc-imx: add SD clock limitation for imx6ull BOUGH CHEN 2018-12-28 3:26 ` BOUGH CHEN 2019-01-14 11:43 ` Ulf Hansson [this message] 2019-01-14 11:43 ` Ulf Hansson 2018-12-28 3:26 ` [PATCH v2 3/3] ARM: dts: imx6ull: change to use new compatible "fsl,imx6ull-usdhc" for usdhc BOUGH CHEN 2018-12-28 3:26 ` BOUGH CHEN 2019-01-15 14:56 ` Shawn Guo 2019-01-15 14:56 ` Shawn Guo 2018-12-28 18:09 ` [PATCH v2 1/3] dt-bindings: mmc: fsl-imx-esdhc: add imx6ull compatible string Fabio Estevam 2018-12-28 18:09 ` Fabio Estevam 2018-12-28 22:15 ` Rob Herring 2018-12-28 22:15 ` Rob Herring 2019-01-14 11:43 ` Ulf Hansson 2019-01-14 11:43 ` Ulf Hansson
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAPDyKFpM3O=Ye6K2cG4b0=E6EXt7HhUYs6HNhomf=azayRL0FA@mail.gmail.com' \ --to=ulf.hansson@linaro.org \ --cc=adrian.hunter@intel.com \ --cc=devicetree@vger.kernel.org \ --cc=fabio.estevam@nxp.com \ --cc=haibo.chen@nxp.com \ --cc=kernel@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-mmc@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=rmk+kernel@armlinux.org.uk \ --cc=robh+dt@kernel.org \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.