From patchwork Wed Sep 19 14:39:48 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Ball X-Patchwork-Id: 1477911 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork2.kernel.org (Postfix) with ESMTP id 4AED5DF280 for ; Wed, 19 Sep 2012 14:41:18 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TELR9-0008WC-Rg; Wed, 19 Sep 2012 14:39:35 +0000 Received: from void.printf.net ([89.145.121.20]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TELR5-0008V2-8o for linux-arm-kernel@lists.infradead.org; Wed, 19 Sep 2012 14:39:32 +0000 Received: from 173-166-109-250-newengland.hfc.comcastbusiness.net ([173.166.109.250] helo=pullcord.laptop.org) by void.printf.net with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.69) (envelope-from ) id 1TELQw-0006jX-I3; Wed, 19 Sep 2012 15:39:22 +0100 From: Chris Ball To: Jaehoon Chung Subject: Re: [PATCH v2 1/5] mmc: host: sdhci-s3c: Add broken-voltage DT property for broken voltage quirk References: <1346748609-11115-1-git-send-email-t.figa@samsung.com> <1587150.uFGRdL0s8e@amdc1227> <1907099.4JSZthrgh2@amdc1227> <5059A64D.6000700@samsung.com> Date: Wed, 19 Sep 2012 10:39:48 -0400 In-Reply-To: <5059A64D.6000700@samsung.com> (Jaehoon Chung's message of "Wed, 19 Sep 2012 20:02:37 +0900") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1.90 (gnu/linux) MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-4.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [89.145.121.20 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: kgene.kim@samsung.com, jy0922.shim@samsung.com, Tomasz Figa , linux-mmc@vger.kernel.org, Adrian Hunter , kyungmin.park@samsung.com, linux-samsung-soc@vger.kernel.org, thomas.abraham@linaro.org, Ben Dooks , linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Hi, On Wed, Sep 19 2012, Jaehoon Chung wrote: >> On Wed, Sep 19 2012, Tomasz Figa wrote: >>> We could just check if the regulator provides the capability to change the >>> voltage. >>> >>> I don't see any direct way of querying the regulator for provided >>> capabilities (correct me if I'm just blind), but calling >>> regulator_count_voltages() on the regulator and checking if the returned >>> value is 1 should be enough to assume that the regulator is fixed. >> >> Sounds good, I agree. Are you able to test that the obvious patch below >> works on your fixed-regulator board? >> >> Jaehoon and Adrian, can you think of any reason why we shouldn't replace >> MMC_CAP2_BROKEN_VOLTAGE with the regulator_count_voltages() call below? >> Thanks. > > I think this is better than using MMC_CAP2_BROKEN_VOLTAGE. > I tested with this..and working fine. Great, here's the patch. Jaehoon, once this is merged, maybe you could help remove the uses of MMC_CAP2_BROKEN_VOLTAGE from arch/arm/mach-exynos and arch/arm/mach-s5pv210 now that they're no longer needed? Thanks, - Chris. Subject: [PATCH] mmc: core: Replace MMC_CAP2_BROKEN_VOLTAGE with test for fixed regulator Before this patch, we were using MMC_CAP2_BROKEN_VOLTAGE as a way to avoid calling regulator_set_voltage() on a fixed regulator, but that's just duplicating information that already exists -- we should test whether the regulator is fixed directly, instead of via a capability. This patch implements that test. We can't reclaim the capability bit just yet, since there are still boards in arch/arm/ that reference it; those references can be removed now. Reported-by: Tomasz Figa Signed-off-by: Chris Ball --- drivers/mmc/core/core.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 044cd01..6612163 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -1113,7 +1113,8 @@ int mmc_regulator_set_ocr(struct mmc_host *mmc, int tmp; int voltage; - /* REVISIT mmc_vddrange_to_ocrmask() may have set some + /* + * REVISIT mmc_vddrange_to_ocrmask() may have set some * bits this regulator doesn't quite support ... don't * be too picky, most cards and regulators are OK with * a 0.1V range goof (it's a small error percentage). @@ -1127,12 +1128,13 @@ int mmc_regulator_set_ocr(struct mmc_host *mmc, max_uV = min_uV + 100 * 1000; } - /* avoid needless changes to this voltage; the regulator - * might not allow this operation + /* + * If we're using a fixed/static regulator, don't call + * regulator_set_voltage; it would fail. */ voltage = regulator_get_voltage(supply); - if (mmc->caps2 & MMC_CAP2_BROKEN_VOLTAGE) + if (regulator_count_voltages(supply) == 1) min_uV = max_uV = voltage; if (voltage < 0)