Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933229AbcLTKd5 (ORCPT ); Tue, 20 Dec 2016 05:33:57 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:38576 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753290AbcLTKdz (ORCPT ); Tue, 20 Dec 2016 05:33:55 -0500 DMARC-Filter: OpenDMARC Filter v1.3.1 smtp.codeaurora.org 1DF1760227 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=pass smtp.mailfrom=riteshh@codeaurora.org Subject: Re: [PATCH 2/4] mmc: mmc: Add change to set controller to HS400 frequency in enhanced strobe To: Shawn Lin , ulf.hansson@linaro.org, adrian.hunter@intel.com References: <1482213199-29152-1-git-send-email-riteshh@codeaurora.org> <1482213199-29152-3-git-send-email-riteshh@codeaurora.org> <5a9ad9e8-6fc5-1a33-6119-7c411df4b6e0@rock-chips.com> Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, stummala@codeaurora.org, georgi.djakov@linaro.org, linux-arm-msm@vger.kernel.org, pramod.gurav@linaro.org, jeremymc@redhat.com, venkatg@codeaurora.org, asutoshd@codeaurora.org From: Ritesh Harjani Message-ID: <1412bf82-6292-20a5-3086-c8dccae930a4@codeaurora.org> Date: Tue, 20 Dec 2016 16:03:46 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <5a9ad9e8-6fc5-1a33-6119-7c411df4b6e0@rock-chips.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2560 Lines: 72 Hi Shawn, On 12/20/2016 12:59 PM, Shawn Lin wrote: > On 2016/12/20 13:53, Ritesh Harjani wrote: >> Currently mmc_select_hs400es is not setting the desired frequency >> before sending switch command. This makes CMD13 to timeout on >> some controllers. >> Thus add a change to set the desired HS400 frequency >> in mmc_select_hs400es when the timing is switched to HS400. > > What is the desired HS400 freq? I guess it is 200MHz, right? > > Well, per the spec, it just say "host *may* changes frequency to > <= 200Mhz". So before setting timing to MMC_TIMING_MMC_HS400, we > already reach ext_csd.hs_max_dtr. So it should meet the spec. If > the fact that some controllers would see CMD13 timeout here, I guess > you wouldn't let folks add max-frequency to the DT as if the max freq > is set to just lower than your *desired HS400 freq* , it the same > failure result even you add this patch, right? > > the root cause the controllers see failure for CMD13 is it didn't > configure the right delay phase or something similar to fit the timing > under the freq of hs_max_dtr, I guess. Actually this may be limitation of sdhc msm controller that it cannot work at lower frequency while in HS400 mode. I would have to see more on this to confirm on why this limitation is there (mostly it was with some DLL limitation). In that case maybe I should not generalize this for other controllers. But still the below code change to set the bus_speed after setting the timing should be fine right ? Since host controller may as well change the frequency to 200MHz. Do you think the below change is fine in this sense? I can change the commit message to just - "set both timing mode and frequency before sending CMD13 in mmc_select_hs400es." Or do you see any other approach to this ? Regards Ritesh > >> >> Signed-off-by: Ritesh Harjani >> --- >> drivers/mmc/core/mmc.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c >> index b61b52f9..eb69497 100644 >> --- a/drivers/mmc/core/mmc.c >> +++ b/drivers/mmc/core/mmc.c >> @@ -1329,6 +1329,7 @@ static int mmc_select_hs400es(struct mmc_card >> *card) >> >> /* 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; >> > > -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project