From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932117AbbDQJh5 (ORCPT ); Fri, 17 Apr 2015 05:37:57 -0400 Received: from mail-qg0-f53.google.com ([209.85.192.53]:34052 "EHLO mail-qg0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751779AbbDQJhp (ORCPT ); Fri, 17 Apr 2015 05:37:45 -0400 MIME-Version: 1.0 In-Reply-To: <20150417091213.GM4946@pengutronix.de> References: <1426562035-16709-1-git-send-email-chaotian.jing@mediatek.com> <1426562035-16709-3-git-send-email-chaotian.jing@mediatek.com> <20150417091213.GM4946@pengutronix.de> Date: Fri, 17 Apr 2015 11:37:44 +0200 Message-ID: Subject: Re: [PATCH v2 2/5] mmc: mediatek: Add Mediatek MMC driver From: Ulf Hansson To: Sascha Hauer Cc: Chaotian Jing , Mark Rutland , James Liao , Arnd Bergmann , srv_heupstream , "devicetree@vger.kernel.org" , Hongzhou Yang , Catalin Marinas , =?UTF-8?B?QmluIFpoYW5nICjnq6Dmlowp?= , linux-mmc , Chris Ball , Will Deacon , "linux-kernel@vger.kernel.org" , "linux-gpio@vger.kernel.org" , Rob Herring , linux-mediatek@lists.infradead.org, Sascha Hauer , Matthias Brugger , "Joe.C" , Eddie Huang , "linux-arm-kernel@lists.infradead.org" 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 17 April 2015 at 11:12, Sascha Hauer wrote: > Ulf, > > On Tue, Mar 31, 2015 at 02:23:06PM +0200, Ulf Hansson wrote: >> On 17 March 2015 at 04:13, Chaotian Jing wrote: >> > + >> > + msdc_set_buswidth(host, ios->bus_width); >> > + >> > + /* Suspend/Resume will do power off/on */ >> > + switch (ios->power_mode) { >> > + case MMC_POWER_UP: >> > + msdc_init_hw(host); >> > + if (!IS_ERR(mmc->supply.vmmc)) { >> > + ret = mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, >> > + ios->vdd); >> > + if (ret) { >> > + dev_err(host->dev, "Failed to set vmmc power!\n"); >> > + return; >> > + } >> > + } >> > + break; >> > + case MMC_POWER_ON: >> > + if (!IS_ERR(mmc->supply.vqmmc)) { >> > + ret = regulator_enable(mmc->supply.vqmmc); >> >> The calls to regulator_enable|disable() for the vqmmc will not be >> balanced properly here. You need a local cache variable like >> "is_enabled" to keep track of this. > > Shouldn't the MMC core provide balanced hooks for this? What about > MMC_POWER_UP, can this be used for enabling regulators? Currently host drivers deals with vqmmc enabling/disabling, setting voltage, etc - entirely by them selves. Dough Anderson is working on fixing that: http://lkml.iu.edu/hypermail/linux/kernel/1503.1/03108.html MMC_POWER_UP is when vmmc shall be enabled. MMC_POWER_ON is when vqmmc shall be enabled. Kind regards Uffe