All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Coquelin <maxime.coquelin@st.com>
To: Peter Griffin <peter.griffin@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, patrice.chotard@st.com,
	srinivas.kandagatla@gmail.com, chris@printf.net,
	ulf.hansson@linaro.org
Cc: lee.jones@linaro.org, devicetree@vger.kernel.org,
	linux-mmc@vger.kernel.org, peppe.cavallaro@st.com
Subject: Re: [PATCH v2 5/8] mmc: sdhci-st: Add sdhci_st_set_uhs_signaling function.
Date: Tue, 3 Mar 2015 11:56:34 +0100	[thread overview]
Message-ID: <54F59362.40605@st.com> (raw)
In-Reply-To: <1424956227-18258-6-git-send-email-peter.griffin@linaro.org>


On 02/26/2015 02:10 PM, Peter Griffin wrote:
> To allow UHS modes to work properly we need to provide the st specific
> set_uhs_signaling callback function. This function differs from the
> generic sdhci_set_uhs_signaling callback in that we need to configure
> the correct delay depending on the UHS mode, and also set the V18_EN
> bit.
>
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> ---
>   drivers/mmc/host/sdhci-st.c | 50 +++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 50 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-st.c b/drivers/mmc/host/sdhci-st.c
> index 11cf4e2..d53bc82 100644
> --- a/drivers/mmc/host/sdhci-st.c
> +++ b/drivers/mmc/host/sdhci-st.c
> @@ -260,6 +260,55 @@ static int sdhci_st_set_dll_for_clock(struct sdhci_host *host)
>   	return ret;
>   }
>   
> +static void sdhci_st_set_uhs_signaling(struct sdhci_host *host,
> +					unsigned int uhs)
> +{
> +	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
> +	struct st_mmc_platform_data *pdata = pltfm_host->priv;
> +	u16 ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
> +	int ret = 0;
> +
> +	/* Select Bus Speed Mode for host */
> +	ctrl_2 &= ~SDHCI_CTRL_UHS_MASK;
> +	switch (uhs) {
> +	/*
> +	 * Set V18_EN -- UHS modes do not work without this.
> +	 * does not change signaling voltage
> +	 */
> +
> +	case MMC_TIMING_UHS_SDR12:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR12 | SDHCI_CTRL_VDD_180;
> +		break;
> +	case MMC_TIMING_UHS_SDR25:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR25 | SDHCI_CTRL_VDD_180;
> +		break;
> +	case MMC_TIMING_UHS_SDR50:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR50 | SDHCI_CTRL_VDD_180;
> +		ret = sdhci_st_set_dll_for_clock(host);
> +		break;
> +	case MMC_TIMING_UHS_SDR104:
> +	case MMC_TIMING_MMC_HS200:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR104 | SDHCI_CTRL_VDD_180;
> +		ret =  sdhci_st_set_dll_for_clock(host);
> +		break;
> +	case MMC_TIMING_UHS_DDR50:
> +	case MMC_TIMING_MMC_DDR52:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_DDR50 | SDHCI_CTRL_VDD_180;
> +		break;
> +	}
> +
> +	if (ret)
> +		dev_warn(mmc_dev(host->mmc), "Error setting dll for clock\n");
Maybe you could  print the uhs value to know which mode it was trying to 
set?
> +
> +	dev_dbg(mmc_dev(host->mmc), "uhs %d, ctrl_2 %04X\n", uhs, ctrl_2);
> +
> +	sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
> +}
>   
>   static u32 sdhci_st_readl(struct sdhci_host *host, int reg)
>   {
> @@ -283,6 +332,7 @@ static const struct sdhci_ops sdhci_st_ops = {
>   	.set_bus_width = sdhci_set_bus_width,
>   	.read_l = sdhci_st_readl,
>   	.reset = sdhci_reset,
> +	.set_uhs_signaling = sdhci_st_set_uhs_signaling,
>   };
>   
>   static const struct sdhci_pltfm_data sdhci_st_pdata = {

Other than that, you can add my:
Acked-by: Maxime Coquelin <maxime.coquelin@st.com>

Thanks,
Maxime

WARNING: multiple messages have this Message-ID (diff)
From: maxime.coquelin@st.com (Maxime Coquelin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 5/8] mmc: sdhci-st: Add sdhci_st_set_uhs_signaling function.
Date: Tue, 3 Mar 2015 11:56:34 +0100	[thread overview]
Message-ID: <54F59362.40605@st.com> (raw)
In-Reply-To: <1424956227-18258-6-git-send-email-peter.griffin@linaro.org>


On 02/26/2015 02:10 PM, Peter Griffin wrote:
> To allow UHS modes to work properly we need to provide the st specific
> set_uhs_signaling callback function. This function differs from the
> generic sdhci_set_uhs_signaling callback in that we need to configure
> the correct delay depending on the UHS mode, and also set the V18_EN
> bit.
>
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> ---
>   drivers/mmc/host/sdhci-st.c | 50 +++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 50 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-st.c b/drivers/mmc/host/sdhci-st.c
> index 11cf4e2..d53bc82 100644
> --- a/drivers/mmc/host/sdhci-st.c
> +++ b/drivers/mmc/host/sdhci-st.c
> @@ -260,6 +260,55 @@ static int sdhci_st_set_dll_for_clock(struct sdhci_host *host)
>   	return ret;
>   }
>   
> +static void sdhci_st_set_uhs_signaling(struct sdhci_host *host,
> +					unsigned int uhs)
> +{
> +	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
> +	struct st_mmc_platform_data *pdata = pltfm_host->priv;
> +	u16 ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
> +	int ret = 0;
> +
> +	/* Select Bus Speed Mode for host */
> +	ctrl_2 &= ~SDHCI_CTRL_UHS_MASK;
> +	switch (uhs) {
> +	/*
> +	 * Set V18_EN -- UHS modes do not work without this.
> +	 * does not change signaling voltage
> +	 */
> +
> +	case MMC_TIMING_UHS_SDR12:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR12 | SDHCI_CTRL_VDD_180;
> +		break;
> +	case MMC_TIMING_UHS_SDR25:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR25 | SDHCI_CTRL_VDD_180;
> +		break;
> +	case MMC_TIMING_UHS_SDR50:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR50 | SDHCI_CTRL_VDD_180;
> +		ret = sdhci_st_set_dll_for_clock(host);
> +		break;
> +	case MMC_TIMING_UHS_SDR104:
> +	case MMC_TIMING_MMC_HS200:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR104 | SDHCI_CTRL_VDD_180;
> +		ret =  sdhci_st_set_dll_for_clock(host);
> +		break;
> +	case MMC_TIMING_UHS_DDR50:
> +	case MMC_TIMING_MMC_DDR52:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_DDR50 | SDHCI_CTRL_VDD_180;
> +		break;
> +	}
> +
> +	if (ret)
> +		dev_warn(mmc_dev(host->mmc), "Error setting dll for clock\n");
Maybe you could  print the uhs value to know which mode it was trying to 
set?
> +
> +	dev_dbg(mmc_dev(host->mmc), "uhs %d, ctrl_2 %04X\n", uhs, ctrl_2);
> +
> +	sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
> +}
>   
>   static u32 sdhci_st_readl(struct sdhci_host *host, int reg)
>   {
> @@ -283,6 +332,7 @@ static const struct sdhci_ops sdhci_st_ops = {
>   	.set_bus_width = sdhci_set_bus_width,
>   	.read_l = sdhci_st_readl,
>   	.reset = sdhci_reset,
> +	.set_uhs_signaling = sdhci_st_set_uhs_signaling,
>   };
>   
>   static const struct sdhci_pltfm_data sdhci_st_pdata = {

Other than that, you can add my:
Acked-by: Maxime Coquelin <maxime.coquelin@st.com>

Thanks,
Maxime

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Coquelin <maxime.coquelin@st.com>
To: Peter Griffin <peter.griffin@linaro.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <patrice.chotard@st.com>,
	<srinivas.kandagatla@gmail.com>, <chris@printf.net>,
	<ulf.hansson@linaro.org>
Cc: <lee.jones@linaro.org>, <devicetree@vger.kernel.org>,
	<linux-mmc@vger.kernel.org>, <peppe.cavallaro@st.com>
Subject: Re: [PATCH v2 5/8] mmc: sdhci-st: Add sdhci_st_set_uhs_signaling function.
Date: Tue, 3 Mar 2015 11:56:34 +0100	[thread overview]
Message-ID: <54F59362.40605@st.com> (raw)
In-Reply-To: <1424956227-18258-6-git-send-email-peter.griffin@linaro.org>


On 02/26/2015 02:10 PM, Peter Griffin wrote:
> To allow UHS modes to work properly we need to provide the st specific
> set_uhs_signaling callback function. This function differs from the
> generic sdhci_set_uhs_signaling callback in that we need to configure
> the correct delay depending on the UHS mode, and also set the V18_EN
> bit.
>
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> ---
>   drivers/mmc/host/sdhci-st.c | 50 +++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 50 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-st.c b/drivers/mmc/host/sdhci-st.c
> index 11cf4e2..d53bc82 100644
> --- a/drivers/mmc/host/sdhci-st.c
> +++ b/drivers/mmc/host/sdhci-st.c
> @@ -260,6 +260,55 @@ static int sdhci_st_set_dll_for_clock(struct sdhci_host *host)
>   	return ret;
>   }
>   
> +static void sdhci_st_set_uhs_signaling(struct sdhci_host *host,
> +					unsigned int uhs)
> +{
> +	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
> +	struct st_mmc_platform_data *pdata = pltfm_host->priv;
> +	u16 ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
> +	int ret = 0;
> +
> +	/* Select Bus Speed Mode for host */
> +	ctrl_2 &= ~SDHCI_CTRL_UHS_MASK;
> +	switch (uhs) {
> +	/*
> +	 * Set V18_EN -- UHS modes do not work without this.
> +	 * does not change signaling voltage
> +	 */
> +
> +	case MMC_TIMING_UHS_SDR12:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR12 | SDHCI_CTRL_VDD_180;
> +		break;
> +	case MMC_TIMING_UHS_SDR25:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR25 | SDHCI_CTRL_VDD_180;
> +		break;
> +	case MMC_TIMING_UHS_SDR50:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR50 | SDHCI_CTRL_VDD_180;
> +		ret = sdhci_st_set_dll_for_clock(host);
> +		break;
> +	case MMC_TIMING_UHS_SDR104:
> +	case MMC_TIMING_MMC_HS200:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_SDR104 | SDHCI_CTRL_VDD_180;
> +		ret =  sdhci_st_set_dll_for_clock(host);
> +		break;
> +	case MMC_TIMING_UHS_DDR50:
> +	case MMC_TIMING_MMC_DDR52:
> +		st_mmcss_set_static_delay(pdata->top_ioaddr);
> +		ctrl_2 |= SDHCI_CTRL_UHS_DDR50 | SDHCI_CTRL_VDD_180;
> +		break;
> +	}
> +
> +	if (ret)
> +		dev_warn(mmc_dev(host->mmc), "Error setting dll for clock\n");
Maybe you could  print the uhs value to know which mode it was trying to 
set?
> +
> +	dev_dbg(mmc_dev(host->mmc), "uhs %d, ctrl_2 %04X\n", uhs, ctrl_2);
> +
> +	sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
> +}
>   
>   static u32 sdhci_st_readl(struct sdhci_host *host, int reg)
>   {
> @@ -283,6 +332,7 @@ static const struct sdhci_ops sdhci_st_ops = {
>   	.set_bus_width = sdhci_set_bus_width,
>   	.read_l = sdhci_st_readl,
>   	.reset = sdhci_reset,
> +	.set_uhs_signaling = sdhci_st_set_uhs_signaling,
>   };
>   
>   static const struct sdhci_pltfm_data sdhci_st_pdata = {

Other than that, you can add my:
Acked-by: Maxime Coquelin <maxime.coquelin@st.com>

Thanks,
Maxime



  reply	other threads:[~2015-03-03 10:56 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-26 13:10 [PATCH v2 0/8] Add sd/emmc support for stih407 family silicon Peter Griffin
2015-02-26 13:10 ` Peter Griffin
2015-02-26 13:10 ` [PATCH v2 1/8] mmc: sdhci-st: Add macros for register offsets and bitfields for mmcss glue regs Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 10:24   ` Maxime Coquelin
2015-03-03 10:24     ` Maxime Coquelin
2015-03-03 10:24     ` Maxime Coquelin
     [not found]     ` <54F58BED.4020900-qxv4g6HH51o@public.gmane.org>
2015-03-30 10:29       ` Peter Griffin
2015-03-30 10:29         ` Peter Griffin
2015-03-30 10:29         ` Peter Griffin
2015-02-26 13:10 ` [PATCH v2 2/8] mmc: sdhci-st: Add support for de-asserting reset signal and top regs resource Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 10:34   ` Maxime Coquelin
2015-03-03 10:34     ` Maxime Coquelin
2015-03-03 10:34     ` Maxime Coquelin
2015-02-26 13:10 ` [PATCH v2 3/8] mmc: sdhci-st: Add delay management functions for top registers (eMMC) Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 10:47   ` Maxime Coquelin
2015-03-03 10:47     ` Maxime Coquelin
2015-03-03 10:47     ` Maxime Coquelin
2015-03-30 10:33     ` Peter Griffin
2015-03-30 10:33       ` Peter Griffin
2015-02-26 13:10 ` [PATCH v2 4/8] mmc: sdhci-st: Add st_mmcss_cconfig function to configure mmcss glue registers Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 10:53   ` Maxime Coquelin
2015-03-03 10:53     ` Maxime Coquelin
2015-03-03 10:53     ` Maxime Coquelin
2015-02-26 13:10 ` [PATCH v2 5/8] mmc: sdhci-st: Add sdhci_st_set_uhs_signaling function Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 10:56   ` Maxime Coquelin [this message]
2015-03-03 10:56     ` Maxime Coquelin
2015-03-03 10:56     ` Maxime Coquelin
2015-03-30 10:46     ` Peter Griffin
2015-03-30 10:46       ` Peter Griffin
2015-02-26 13:10 ` [PATCH v2 6/8] mmc: sdhci-st: Update the quirks for this controller Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 10:57   ` Maxime Coquelin
2015-03-03 10:57     ` Maxime Coquelin
2015-03-03 10:57     ` Maxime Coquelin
2015-02-26 13:10 ` [PATCH v2 7/8] mmc: sdhci-st: Update ST SDHCI binding documentation Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 11:01   ` Maxime Coquelin
2015-03-03 11:01     ` Maxime Coquelin
2015-03-03 11:01     ` Maxime Coquelin
2015-02-26 13:10 ` [PATCH v2 8/8] ARM: STi: DT: STiH407: Add dt nodes for sdhci and emmc Peter Griffin
2015-02-26 13:10   ` Peter Griffin
2015-03-03 11:03   ` Maxime Coquelin
2015-03-03 11:03     ` Maxime Coquelin
2015-03-03 11:03     ` Maxime Coquelin
2015-03-30 11:23     ` Peter Griffin
2015-03-30 11:23       ` Peter Griffin
2015-03-30 11:37       ` Lee Jones
2015-03-30 11:37         ` Lee Jones
2015-03-30 11:43         ` Maxime Coquelin
2015-03-30 11:43           ` Maxime Coquelin
2015-03-30 11:43           ` Maxime Coquelin

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=54F59362.40605@st.com \
    --to=maxime.coquelin@st.com \
    --cc=chris@printf.net \
    --cc=devicetree@vger.kernel.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=patrice.chotard@st.com \
    --cc=peppe.cavallaro@st.com \
    --cc=peter.griffin@linaro.org \
    --cc=srinivas.kandagatla@gmail.com \
    --cc=ulf.hansson@linaro.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.