From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757219AbcEDJZF (ORCPT ); Wed, 4 May 2016 05:25:05 -0400 Received: from lucky1.263xmail.com ([211.157.147.135]:36471 "EHLO lucky1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751155AbcEDJZC (ORCPT ); Wed, 4 May 2016 05:25:02 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 1 X-MAIL-DELIVERY: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-KSVirus-check: 0 X-RL-SENDER: shawn.lin@rock-chips.com X-FST-TO: linux-rockchip@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: shawn.lin@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v2] mmc: sdhci-of-arasan: fix set_clock when a phy is supported To: Heiko Stuebner References: <1461832731-28422-1-git-send-email-shawn.lin@rock-chips.com> <1d3a9de8-9092-add5-078e-66ce4ce5f6f3@rock-chips.com> <1879484.KeYGv3HTkz@phil> Cc: shawn.lin@rock-chips.com, Ulf Hansson , Adrian Hunter , Michal Simek , =?UTF-8?Q?S=c3=b6ren_Brinkmann?= , linux-mmc , "linux-kernel@vger.kernel.org" , Doug Anderson , "open list:ARM/Rockchip SoC..." From: Shawn Lin Message-ID: Date: Wed, 4 May 2016 17:24:44 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <1879484.KeYGv3HTkz@phil> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2016/5/4 16:35, Heiko Stuebner 写道: > Am Mittwoch, 4. Mai 2016, 09:48:55 schrieb Shawn Lin: >> 在 2016/4/28 18:38, Ulf Hansson 写道: >>> On 28 April 2016 at 10:38, Shawn Lin wrote: >>>> commit 61b914eb81f8 ("mmc: sdhci-of-arasan: add phy support for >>>> sdhci-of-arasan") introduce phy support for arasan. According to >>>> the vendor's databook, we should make sure the phy is in poweroff >>>> status before we configure the clk stuff. Otherwise it may cause >>>> some IO sample timing issues from the test. And we don't need this >>>> extra operation while running in low performance mode since phy >>>> doesn't trigger sampling block. >>>> >>>> Signed-off-by: Shawn Lin >>> >>> Thanks, applied for next! >> >> Thanks for applying v2 but, could you please drop it and applied v3 >> I just send :) . >> Because v2 introduces a bug. Set_clock callback will be >> called under the protection of spinlock in sdhci_do_set_ios. However >> PHY APIs need mutex which fails the kernel's debug check >> >> BUG: sleeping function called from invalid context at >> kernel/locking/mutex.c > > I think in general you will need to provide a follow-up patch instead of > replacing the old version, as Ulf might not want to restructure an already > published branch (depends on the maintainer), especially as already other > stuff is on top of your patch [0]. > Aha.. yes I see other patches on top of mine now. Thanks for reminding it. Ulf, would you mind that I send a new patch to fix it, or you are prone to restructure the next? > > Heiko > > [0] > https://git.linaro.org/people/ulf.hansson/mmc.git/shortlog/refs/heads/next > > > > >>> Kind regards >>> Uffe >>> >>>> --- >>>> >>>> Changes in v2: >>>> - change commit msg title to indicate it's a fix >>>> - fix a typo in commmit msg >>>> >>>> drivers/mmc/host/sdhci-of-arasan.c | 20 +++++++++++++++++++- >>>> 1 file changed, 19 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/mmc/host/sdhci-of-arasan.c >>>> b/drivers/mmc/host/sdhci-of-arasan.c index 2e482b1..20b859e 100644 >>>> --- a/drivers/mmc/host/sdhci-of-arasan.c >>>> +++ b/drivers/mmc/host/sdhci-of-arasan.c >>>> @@ -55,8 +55,26 @@ static unsigned int >>>> sdhci_arasan_get_timeout_clock(struct sdhci_host *host)>> >>>> return freq; >>>> >>>> } >>>> >>>> +static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned >>>> int clock) +{ >>>> + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); >>>> + struct sdhci_arasan_data *sdhci_arasan = >>>> sdhci_pltfm_priv(pltfm_host); + bool ctrl_phy = false; >>>> + >>>> + if (clock > MMC_HIGH_52_MAX_DTR && >>>> (!IS_ERR(sdhci_arasan->phy))) >>>> + ctrl_phy = true; >>>> + >>>> + if (ctrl_phy) >>>> + phy_power_off(sdhci_arasan->phy); >>>> + >>>> + sdhci_set_clock(host, clock); >>>> + >>>> + if (ctrl_phy) >>>> + phy_power_on(sdhci_arasan->phy); >>>> +} >>>> + >>>> >>>> static struct sdhci_ops sdhci_arasan_ops = { >>>> >>>> - .set_clock = sdhci_set_clock, >>>> + .set_clock = sdhci_arasan_set_clock, >>>> >>>> .get_max_clock = sdhci_pltfm_clk_get_max_clock, >>>> .get_timeout_clock = sdhci_arasan_get_timeout_clock, >>>> .set_bus_width = sdhci_set_bus_width, >>>> >>>> -- >>>> 2.3.7 >>>> >>>> >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >>>> the body of a message to majordomo@vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > -- Best Regards Shawn Lin