diff mbox

[3/4] mmc: mmc: enable ios.enhanced_strobe before mmc_set_timing

Message ID 1482213199-29152-4-git-send-email-riteshh@codeaurora.org (mailing list archive)
State Not Applicable, archived
Delegated to: Andy Gross
Headers show

Commit Message

Ritesh Harjani Dec. 20, 2016, 5:53 a.m. UTC
Some controllers may need to configure few registers based on enhanced
strobe mode while configuring to HS400 timing, thus make
ios.enhanced_strobe to true before mmc_set_timing in mmc_select_hs400es.

Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
---
 drivers/mmc/core/mmc.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Ritesh Harjani Dec. 23, 2016, 9:18 a.m. UTC | #1
Hi Shawn,

Do you think, below change should be fine?
I am still checking on what we discussed on Patch2.

why I am asking is because - for HS400 in SDHC-MSM, we do the DLL 
re-calibration as per the HW sequence. So it is done in both the cases, 
for HS400 mode without and with enhanced strobe mode.

This can be done as part of set_ios when mmc_set_timing is called in 
sdhci-msm driver.

I am still trying to check more on what would be more generic and 
appropriate way inside sdhci-msm, for that I would like to know if 
ios.enhanced_strobe = true before calling mmc_set_timing should be 
acceptable or not ?


Regards
Ritesh

On 12/20/2016 11:23 AM, Ritesh Harjani wrote:
> Some controllers may need to configure few registers based on enhanced
> strobe mode while configuring to HS400 timing, thus make
> ios.enhanced_strobe to true before mmc_set_timing in mmc_select_hs400es.
>
> Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
> ---
>  drivers/mmc/core/mmc.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
> index eb69497..052368e 100644
> --- a/drivers/mmc/core/mmc.c
> +++ b/drivers/mmc/core/mmc.c
> @@ -1327,12 +1327,18 @@ static int mmc_select_hs400es(struct mmc_card *card)
>  		goto out_err;
>  	}
>
> +	/*
> +	 * Enable enhanced_strobe in ios, as some controllers
> +	 * may need to configure few registers based on enhanced
> +	 * strobe while changing HS400 timing.
> +	 */
> +	host->ios.enhanced_strobe = true;
> +
>  	/* Set host controller to HS400 timing and frequency */
>  	mmc_set_timing(host, MMC_TIMING_MMC_HS400);
>  	mmc_set_bus_speed(card);
>
>  	/* Controller enable enhanced strobe function */
> -	host->ios.enhanced_strobe = true;
>  	if (host->ops->hs400_enhanced_strobe)
>  		host->ops->hs400_enhanced_strobe(host, &host->ios);
>
>
Shawn Lin Dec. 26, 2016, 7:12 a.m. UTC | #2
On 2016/12/23 17:18, Ritesh Harjani wrote:
> Hi Shawn,
>
> Do you think, below change should be fine?

yes.

> I am still checking on what we discussed on Patch2.
>
> why I am asking is because - for HS400 in SDHC-MSM, we do the DLL
> re-calibration as per the HW sequence. So it is done in both the cases,
> for HS400 mode without and with enhanced strobe mode.
>
> This can be done as part of set_ios when mmc_set_timing is called in
> sdhci-msm driver.
>
> I am still trying to check more on what would be more generic and
> appropriate way inside sdhci-msm, for that I would like to know if
> ios.enhanced_strobe = true before calling mmc_set_timing should be
> acceptable or not ?
>

Sure.

>
> Regards
> Ritesh
>
> On 12/20/2016 11:23 AM, Ritesh Harjani wrote:
>> Some controllers may need to configure few registers based on enhanced
>> strobe mode while configuring to HS400 timing, thus make
>> ios.enhanced_strobe to true before mmc_set_timing in mmc_select_hs400es.
>>
>> Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
>> ---
>>  drivers/mmc/core/mmc.c | 8 +++++++-
>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
>> index eb69497..052368e 100644
>> --- a/drivers/mmc/core/mmc.c
>> +++ b/drivers/mmc/core/mmc.c
>> @@ -1327,12 +1327,18 @@ static int mmc_select_hs400es(struct mmc_card
>> *card)
>>          goto out_err;
>>      }
>>
>> +    /*
>> +     * Enable enhanced_strobe in ios, as some controllers
>> +     * may need to configure few registers based on enhanced
>> +     * strobe while changing HS400 timing.
>> +     */
>> +    host->ios.enhanced_strobe = true;
>> +
>>      /* Set host controller to HS400 timing and frequency */
>>      mmc_set_timing(host, MMC_TIMING_MMC_HS400);
>>      mmc_set_bus_speed(card);
>>
>>      /* Controller enable enhanced strobe function */
>> -    host->ios.enhanced_strobe = true;
>>      if (host->ops->hs400_enhanced_strobe)
>>          host->ops->hs400_enhanced_strobe(host, &host->ios);
>>
>>
>
diff mbox

Patch

diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index eb69497..052368e 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1327,12 +1327,18 @@  static int mmc_select_hs400es(struct mmc_card *card)
 		goto out_err;
 	}
 
+	/*
+	 * Enable enhanced_strobe in ios, as some controllers
+	 * may need to configure few registers based on enhanced
+	 * strobe while changing HS400 timing.
+	 */
+	host->ios.enhanced_strobe = true;
+
 	/* Set host controller to HS400 timing and frequency */
 	mmc_set_timing(host, MMC_TIMING_MMC_HS400);
 	mmc_set_bus_speed(card);
 
 	/* Controller enable enhanced strobe function */
-	host->ios.enhanced_strobe = true;
 	if (host->ops->hs400_enhanced_strobe)
 		host->ops->hs400_enhanced_strobe(host, &host->ios);