From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ulf Hansson Subject: Re: [PATCH v2] mmc: sdhci-esdhc-imx: allow 1.8V modes without 100/200MHz pinctrl states Date: Thu, 5 Jul 2018 13:29:48 +0200 Message-ID: References: <20180704150745.21003-1-stefan@agner.ch> <69f6122b8a69f1ab41d2ef8274321689@agner.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: In-Reply-To: <69f6122b8a69f1ab41d2ef8274321689@agner.ch> Sender: linux-kernel-owner@vger.kernel.org To: Stefan Agner Cc: Adrian Hunter , Fabio Estevam , Haibo Chen , Aisheng Dong , Michael Trimarchi , Russell King , "linux-mmc@vger.kernel.org" , Linux Kernel Mailing List List-Id: linux-mmc@vger.kernel.org [...] >>> Btw, I still get the switching error once during boot-up: >>> mmc1: Switching to 3.3V signalling voltage failed >> >> I guess the this happens then also at system resume? >> >> The core tries first with 3.3 then if it fails, it continues with 1.8V, etc. >> >>> >>> This is due to the call from mmc_set_initial_signal_voltage. It is a bit >>> unfortunate since this is printed as a warning. Not sure if that could >>> be prevented somehow? >> >> Seems like SDHCI_SIGNALING_330 should not be set, unless 3.3V I/O is >> supported. That should avoid SDHCI from trying and instead just >> returning an error code immediately. >> >> This seems like a generic issues for all SDHCI variant drivers. > > Hm, can we resolve this in a generic fashion? > > E.g something like this in sdhci_setup_host(): > > if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 3200000, > 3450000)) > host->flags &= ~SDHCI_SIGNALING_330; Something like that seems right, but a wider range should be allowed. 2.7V to 3.6V is allowed according to the specs. Also, vqmmc is optional, so in case it doesn't exist we must not clear the SDHCI_SIGNALING_330 bit. Kind regards Uffe