? 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 <shawn.lin at rock-chips.com> 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 <shawn.lin at rock-chips.com> >>> >>> 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 at vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > -- Best Regards Shawn Lin