All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.