From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933195AbcIVJjm (ORCPT ); Thu, 22 Sep 2016 05:39:42 -0400 Received: from mail-wm0-f44.google.com ([74.125.82.44]:38354 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756910AbcIVJjh (ORCPT ); Thu, 22 Sep 2016 05:39:37 -0400 MIME-Version: 1.0 In-Reply-To: <1474422233-29355-3-git-send-email-shawn.lin@rock-chips.com> References: <1474422233-29355-1-git-send-email-shawn.lin@rock-chips.com> <1474422233-29355-3-git-send-email-shawn.lin@rock-chips.com> From: Ulf Hansson Date: Thu, 22 Sep 2016 11:39:30 +0200 Message-ID: Subject: Re: [PATCH 2/5] mmc: core: switch to 1V8 or 1V2 for hs400es mode To: Shawn Lin Cc: Adrian Hunter , Jaehoon Chung , linux-mmc , "linux-kernel@vger.kernel.org" , "open list:ARM/Rockchip SoC..." , "# 4.0+" , 4.4#@263.net, +@263.net Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 21 September 2016 at 03:43, Shawn Lin wrote: > When introducing hs400es, I didn't notice that we haven't > switched voltage to 1V2 or 1V8 for it. That happens to work > as the first controller claiming to support hs400es, arasan(5.1), > which is designed to only support 1V8. So the voltage is fixed to 1V8. > But it actually is wrong, and will not fit for other host controllers. > Let's fix it. > > Fixes: commit 81ac2af65793ecf ("mmc: core: implement enhanced strobe support") > Cc: 4.4# + > Signed-off-by: Shawn Lin > --- > > drivers/mmc/core/mmc.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index 3486bc7..3163bb9 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -1263,6 +1263,16 @@ static int mmc_select_hs400es(struct mmc_card *card) > goto out_err; > } > > + if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_2V) /s/EXT_CSD_CARD_TYPE_HS200_1_2V/EXT_CSD_CARD_TYPE_HS400_1_2V > + err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120); > + > + if (err && card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_8V) /s/EXT_CSD_CARD_TYPE_HS200_1_8V/EXT_CSD_CARD_TYPE_HS400_1_8V > + err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180); > + > + /* If fails try again during next card power cycle */ > + if (err) > + goto out_err; > + > err = mmc_select_bus_width(card); > if (err < 0) > goto out_err; > -- > 2.3.7 > > Kind regards Uffe