All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers
@ 2020-11-06 13:48 Adrian Hunter
  2020-11-10 12:01 ` Ulf Hansson
  0 siblings, 1 reply; 4+ messages in thread
From: Adrian Hunter @ 2020-11-06 13:48 UTC (permalink / raw)
  To: Ulf Hansson; +Cc: linux-mmc

A UHS setting of SDR25 can give better results for High Speed mode.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org # v5.4+
---
 drivers/mmc/host/sdhci-pci-core.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
index 23da7f7fe093..9552708846ca 100644
--- a/drivers/mmc/host/sdhci-pci-core.c
+++ b/drivers/mmc/host/sdhci-pci-core.c
@@ -665,6 +665,15 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode,
 	}
 }
 
+static void sdhci_intel_set_uhs_signaling(struct sdhci_host *host,
+					  unsigned int timing)
+{
+	/* Set UHS timing to SDR25 for High Speed mode */
+	if (timing == MMC_TIMING_MMC_HS || timing == MMC_TIMING_SD_HS)
+		timing = MMC_TIMING_UHS_SDR25;
+	sdhci_set_uhs_signaling(host, timing);
+}
+
 #define INTEL_HS400_ES_REG 0x78
 #define INTEL_HS400_ES_BIT BIT(0)
 
@@ -721,7 +730,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = {
 	.enable_dma		= sdhci_pci_enable_dma,
 	.set_bus_width		= sdhci_set_bus_width,
 	.reset			= sdhci_reset,
-	.set_uhs_signaling	= sdhci_set_uhs_signaling,
+	.set_uhs_signaling	= sdhci_intel_set_uhs_signaling,
 	.hw_reset		= sdhci_pci_hw_reset,
 };
 
@@ -731,7 +740,7 @@ static const struct sdhci_ops sdhci_intel_glk_ops = {
 	.enable_dma		= sdhci_pci_enable_dma,
 	.set_bus_width		= sdhci_set_bus_width,
 	.reset			= sdhci_cqhci_reset,
-	.set_uhs_signaling	= sdhci_set_uhs_signaling,
+	.set_uhs_signaling	= sdhci_intel_set_uhs_signaling,
 	.hw_reset		= sdhci_pci_hw_reset,
 	.irq			= sdhci_cqhci_irq,
 };
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers
  2020-11-06 13:48 [PATCH] mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers Adrian Hunter
@ 2020-11-10 12:01 ` Ulf Hansson
  2020-11-11  5:34   ` Adrian Hunter
  0 siblings, 1 reply; 4+ messages in thread
From: Ulf Hansson @ 2020-11-10 12:01 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-mmc

On Fri, 6 Nov 2020 at 14:48, Adrian Hunter <adrian.hunter@intel.com> wrote:
>
> A UHS setting of SDR25 can give better results for High Speed mode.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Cc: stable@vger.kernel.org # v5.4+
> ---
>  drivers/mmc/host/sdhci-pci-core.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index 23da7f7fe093..9552708846ca 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -665,6 +665,15 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode,
>         }
>  }
>
> +static void sdhci_intel_set_uhs_signaling(struct sdhci_host *host,
> +                                         unsigned int timing)
> +{
> +       /* Set UHS timing to SDR25 for High Speed mode */
> +       if (timing == MMC_TIMING_MMC_HS || timing == MMC_TIMING_SD_HS)
> +               timing = MMC_TIMING_UHS_SDR25;

I don't quite get this. If the mmc core requests high speed mode, you
override this with timing settings corresponding to UHS_SDR25, right?

> +       sdhci_set_uhs_signaling(host, timing);
> +}
> +
>  #define INTEL_HS400_ES_REG 0x78
>  #define INTEL_HS400_ES_BIT BIT(0)
>
> @@ -721,7 +730,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = {
>         .enable_dma             = sdhci_pci_enable_dma,
>         .set_bus_width          = sdhci_set_bus_width,
>         .reset                  = sdhci_reset,
> -       .set_uhs_signaling      = sdhci_set_uhs_signaling,
> +       .set_uhs_signaling      = sdhci_intel_set_uhs_signaling,
>         .hw_reset               = sdhci_pci_hw_reset,
>  };
>
> @@ -731,7 +740,7 @@ static const struct sdhci_ops sdhci_intel_glk_ops = {
>         .enable_dma             = sdhci_pci_enable_dma,
>         .set_bus_width          = sdhci_set_bus_width,
>         .reset                  = sdhci_cqhci_reset,
> -       .set_uhs_signaling      = sdhci_set_uhs_signaling,
> +       .set_uhs_signaling      = sdhci_intel_set_uhs_signaling,
>         .hw_reset               = sdhci_pci_hw_reset,
>         .irq                    = sdhci_cqhci_irq,
>  };
> --
> 2.17.1
>

Kind regards
Uffe

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers
  2020-11-10 12:01 ` Ulf Hansson
@ 2020-11-11  5:34   ` Adrian Hunter
  2020-11-12 13:39     ` Adrian Hunter
  0 siblings, 1 reply; 4+ messages in thread
From: Adrian Hunter @ 2020-11-11  5:34 UTC (permalink / raw)
  To: Ulf Hansson; +Cc: linux-mmc

On 10/11/20 2:01 pm, Ulf Hansson wrote:
> On Fri, 6 Nov 2020 at 14:48, Adrian Hunter <adrian.hunter@intel.com> wrote:
>>
>> A UHS setting of SDR25 can give better results for High Speed mode.
>>
>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>> Cc: stable@vger.kernel.org # v5.4+
>> ---
>>  drivers/mmc/host/sdhci-pci-core.c | 13 +++++++++++--
>>  1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
>> index 23da7f7fe093..9552708846ca 100644
>> --- a/drivers/mmc/host/sdhci-pci-core.c
>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>> @@ -665,6 +665,15 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode,
>>         }
>>  }
>>
>> +static void sdhci_intel_set_uhs_signaling(struct sdhci_host *host,
>> +                                         unsigned int timing)
>> +{
>> +       /* Set UHS timing to SDR25 for High Speed mode */
>> +       if (timing == MMC_TIMING_MMC_HS || timing == MMC_TIMING_SD_HS)
>> +               timing = MMC_TIMING_UHS_SDR25;
> 
> I don't quite get this. If the mmc core requests high speed mode, you
> override this with timing settings corresponding to UHS_SDR25, right?

Yes.  There is no setting corresponding to high speed.  Currently SDHCI sets
no value, which means zero which is also the setting for SDR12.  There was
an attempt to change this in sdhci.c but it caused problems for some
drivers, so it was reverted and the change was made to sdhci-brcmstb in
commit 2fefc7c5f7d16e ("mmc: sdhci-brcmstb: Fix incorrect switch to HS
mode").  Several other drivers also do this.

> 
>> +       sdhci_set_uhs_signaling(host, timing);
>> +}
>> +
>>  #define INTEL_HS400_ES_REG 0x78
>>  #define INTEL_HS400_ES_BIT BIT(0)
>>
>> @@ -721,7 +730,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = {
>>         .enable_dma             = sdhci_pci_enable_dma,
>>         .set_bus_width          = sdhci_set_bus_width,
>>         .reset                  = sdhci_reset,
>> -       .set_uhs_signaling      = sdhci_set_uhs_signaling,
>> +       .set_uhs_signaling      = sdhci_intel_set_uhs_signaling,
>>         .hw_reset               = sdhci_pci_hw_reset,
>>  };
>>
>> @@ -731,7 +740,7 @@ static const struct sdhci_ops sdhci_intel_glk_ops = {
>>         .enable_dma             = sdhci_pci_enable_dma,
>>         .set_bus_width          = sdhci_set_bus_width,
>>         .reset                  = sdhci_cqhci_reset,
>> -       .set_uhs_signaling      = sdhci_set_uhs_signaling,
>> +       .set_uhs_signaling      = sdhci_intel_set_uhs_signaling,
>>         .hw_reset               = sdhci_pci_hw_reset,
>>         .irq                    = sdhci_cqhci_irq,
>>  };
>> --
>> 2.17.1
>>
> 
> Kind regards
> Uffe
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers
  2020-11-11  5:34   ` Adrian Hunter
@ 2020-11-12 13:39     ` Adrian Hunter
  0 siblings, 0 replies; 4+ messages in thread
From: Adrian Hunter @ 2020-11-12 13:39 UTC (permalink / raw)
  To: Ulf Hansson; +Cc: linux-mmc

On 11/11/20 7:34 am, Adrian Hunter wrote:
> On 10/11/20 2:01 pm, Ulf Hansson wrote:
>> On Fri, 6 Nov 2020 at 14:48, Adrian Hunter <adrian.hunter@intel.com> wrote:
>>>
>>> A UHS setting of SDR25 can give better results for High Speed mode.
>>>
>>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>>> Cc: stable@vger.kernel.org # v5.4+
>>> ---
>>>  drivers/mmc/host/sdhci-pci-core.c | 13 +++++++++++--
>>>  1 file changed, 11 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
>>> index 23da7f7fe093..9552708846ca 100644
>>> --- a/drivers/mmc/host/sdhci-pci-core.c
>>> +++ b/drivers/mmc/host/sdhci-pci-core.c
>>> @@ -665,6 +665,15 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode,
>>>         }
>>>  }
>>>
>>> +static void sdhci_intel_set_uhs_signaling(struct sdhci_host *host,
>>> +                                         unsigned int timing)
>>> +{
>>> +       /* Set UHS timing to SDR25 for High Speed mode */
>>> +       if (timing == MMC_TIMING_MMC_HS || timing == MMC_TIMING_SD_HS)
>>> +               timing = MMC_TIMING_UHS_SDR25;
>>
>> I don't quite get this. If the mmc core requests high speed mode, you
>> override this with timing settings corresponding to UHS_SDR25, right?
> 
> Yes.  There is no setting corresponding to high speed.  Currently SDHCI sets
> no value, which means zero which is also the setting for SDR12.  There was
> an attempt to change this in sdhci.c but it caused problems for some
> drivers, so it was reverted and the change was made to sdhci-brcmstb in
> commit 2fefc7c5f7d16e ("mmc: sdhci-brcmstb: Fix incorrect switch to HS
> mode").  Several other drivers also do this.
> 

Send V2 with expanded commit message

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-12 13:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-06 13:48 [PATCH] mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers Adrian Hunter
2020-11-10 12:01 ` Ulf Hansson
2020-11-11  5:34   ` Adrian Hunter
2020-11-12 13:39     ` Adrian Hunter

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.