From patchwork Thu Jan 4 07:22:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chunyan Zhang X-Patchwork-Id: 123393 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp11109039qgn; Wed, 3 Jan 2018 23:23:57 -0800 (PST) X-Google-Smtp-Source: ACJfBouQt0yOiZJPgCLCzqZS3IlQISUN6Vwo4Z3Xnh7GscTl40QdXWUzYGipQb1aBnlkmetEcejX X-Received: by 10.98.110.193 with SMTP id j184mr3890682pfc.187.1515050637454; Wed, 03 Jan 2018 23:23:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515050637; cv=none; d=google.com; s=arc-20160816; b=LIjhT5XmChlnRPrQ+pEeevjSEnBl0qKwtX5DeDRetr1+S+eGWN4U0ChCak6xBnUpcO XHwKAJeMBJQ3+V9H80IlcVV/DiNb8iu22VfNYscfivlrVXHXtKhsnUQyEuJ/jan46akC m471osz2L7ym2DkEx5667sndbXv1swQ5IA0jT6BrKbjPv5xwBigPPNaJVJXCfzy2vkLs SpvUWbSsjcKxvFOSnfhOrk2guJ66M91ytpcb6mWC1Nu7CPEBUPc+iTiL7GpRz7Wo8ohB TYAqqak8Ql1LYILfXaFxYPdd7KYMRf6m6KZRTdGWylQ1EPiWaIj/jQLU8XRTx6mWU472 a7DA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=9azF0a/CRva7kzQyUrrdYveI6VR5wsw/N+Df49tk6LE=; b=dhQ59lKJIVSs743vyGWr6S87tYNnf4oNPBnAVjYUhZDjrlLlkWHWU8vwcuHjGaO8Q4 o0AXzciOneFWtcqkkVPABKe3ELQ15HUZmEzS9+JlzFf0Gg5bkjfQEPoAut9edA8C38bU 2kH2hbpFW196dbZrJgiR9v1N1aHae9Tz5vSr7+E4KVVVkcQYacXY7p5LfzHdrCVgKjGw 055wpbs+YPugs2mujC2UAk6HPVyJdduD/Z7+9BaU/h7ztCiJz3MxdkToEN3glcM1kTbW 3047LtRuWskl2uOVG214Ci+7zF1rtVpvEDlDnxhcKf/kotQY42Aniv5GWMSIcCLLbKJF IzZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=I0ESj1hc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c32si1913374plj.281.2018.01.03.23.23.57; Wed, 03 Jan 2018 23:23:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=I0ESj1hc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752187AbeADHXw (ORCPT + 28 others); Thu, 4 Jan 2018 02:23:52 -0500 Received: from mail-pl0-f65.google.com ([209.85.160.65]:44397 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752132AbeADHXu (ORCPT ); Thu, 4 Jan 2018 02:23:50 -0500 Received: by mail-pl0-f65.google.com with SMTP id n13so590361plp.11 for ; Wed, 03 Jan 2018 23:23:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9azF0a/CRva7kzQyUrrdYveI6VR5wsw/N+Df49tk6LE=; b=I0ESj1hcbI+yVHOEvKhKnHVmEQtkkLnNNBJ2ZAOkw6MM2HJMIdAoRJ0V7ygh7pQNfe ow7aijZ0dLSFjAfrr8KfQMMQOiHm1wk55JnMf9eSSNUf7RbPyP4+x43Tug0RCisD4tll rBGOnsa2mxJt6/IifnkuazX6Nj/a8s+MYnV50= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9azF0a/CRva7kzQyUrrdYveI6VR5wsw/N+Df49tk6LE=; b=b5rsTx3+sd7QfP3dM8rOWVrU5uf7sFp6hOZ9tdctHFNhogJw1ITPMy3Wvp3uOV32+c +KFdLzLBmbE9o5Kl5hZkUuwm61/hcpO5BCW2Pa4TXKUSjQ2LfMv89jPEzjVpmKdjDOSR fj6ky7X82KFndrrfyZBMJVkBFXor7ACOPrQ7KfRK6zP1PS7rhZaM/gkLAuXFAfzu7KQo LSPAKpG2blW/dzGV2DW8ZJE0RokWMAMNx8YLtTYqe1/Kq735MbVxNTvCXT7u5TP3p+0y LxR2X5oSv10X7xm5j+sahU8CpEKDCLyz9WW4zAZEU+dQWKGL29dTNMoiyVkYtX5JiqOW zhiw== X-Gm-Message-State: AKGB3mLhBt7ZkwBxyP7vMySpxJsWhrr8iW13appwcfebJR1HPg5vx8tq XUqNwq/aSkKoJCpqp7v1oOs4/w== X-Received: by 10.159.205.135 with SMTP id v7mr3740645plo.371.1515050629542; Wed, 03 Jan 2018 23:23:49 -0800 (PST) Received: from ubt.spreadtrum.com ([117.18.48.82]) by smtp.gmail.com with ESMTPSA id s14sm6244456pfa.158.2018.01.03.23.23.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 03 Jan 2018 23:23:48 -0800 (PST) From: Chunyan Zhang To: Mark Brown , Rob Herring Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Ulf Hansson , Chunyan Zhang Subject: [PATCH V2 3/5] drivers: regulator: leave one item to record whether regulator is enabled Date: Thu, 4 Jan 2018 15:22:46 +0800 Message-Id: <1515050568-23876-4-git-send-email-zhang.chunyan@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515050568-23876-1-git-send-email-zhang.chunyan@linaro.org> References: <1515050568-23876-1-git-send-email-zhang.chunyan@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The items "disabled" and "enabled" are a little redundant, since only one of them would be set to record if the regulator device should keep on or be switched to off in suspend states. So in this patch, the "disabled" was removed, only leave the "enabled": - enabled == 1 for regulator-on-in-suspend - enabled == 0 for regulator-off-in-suspend - enabled == -1 means do nothing when entering suspend mode. Signed-off-by: Chunyan Zhang --- drivers/regulator/core.c | 14 ++++++-------- drivers/regulator/of_regulator.c | 6 ++++-- include/linux/regulator/machine.h | 12 +++++++++--- 3 files changed, 19 insertions(+), 13 deletions(-) -- 2.7.4 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 97bc9f7..5ea80e9 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -742,21 +742,19 @@ static int suspend_set_state(struct regulator_dev *rdev, * only warn if the driver implements set_suspend_voltage or * set_suspend_mode callback. */ - if (!rstate->enabled && !rstate->disabled) { + if (rstate->enabled != ENABLE_IN_SUSPEND && + rstate->enabled != DISABLE_IN_SUSPEND) { if (rdev->desc->ops->set_suspend_voltage || rdev->desc->ops->set_suspend_mode) rdev_warn(rdev, "No configuration\n"); return 0; } - if (rstate->enabled && rstate->disabled) { - rdev_err(rdev, "invalid configuration\n"); - return -EINVAL; - } - - if (rstate->enabled && rdev->desc->ops->set_suspend_enable) + if (rstate->enabled == ENABLE_IN_SUSPEND && + rdev->desc->ops->set_suspend_enable) ret = rdev->desc->ops->set_suspend_enable(rdev); - else if (rstate->disabled && rdev->desc->ops->set_suspend_disable) + else if (rstate->enabled == DISABLE_IN_SUSPEND && + rdev->desc->ops->set_suspend_disable) ret = rdev->desc->ops->set_suspend_disable(rdev); else /* OK if set_suspend_enable or set_suspend_disable is NULL */ ret = 0; diff --git a/drivers/regulator/of_regulator.c b/drivers/regulator/of_regulator.c index 14637a0..41dad42 100644 --- a/drivers/regulator/of_regulator.c +++ b/drivers/regulator/of_regulator.c @@ -177,10 +177,12 @@ static void of_get_regulation_constraints(struct device_node *np, if (of_property_read_bool(suspend_np, "regulator-on-in-suspend")) - suspend_state->enabled = true; + suspend_state->enabled = ENABLE_IN_SUSPEND; else if (of_property_read_bool(suspend_np, "regulator-off-in-suspend")) - suspend_state->disabled = true; + suspend_state->enabled = DISABLE_IN_SUSPEND; + else + suspend_state->enabled = DO_NOTHING_IN_SUSPEND; if (!of_property_read_u32(suspend_np, "regulator-suspend-microvolt", &pval)) diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h index 9cd4fef..e50519f 100644 --- a/include/linux/regulator/machine.h +++ b/include/linux/regulator/machine.h @@ -42,6 +42,11 @@ struct regulator; #define REGULATOR_CHANGE_DRMS 0x10 #define REGULATOR_CHANGE_BYPASS 0x20 +/* operations in suspend mode */ +#define DO_NOTHING_IN_SUSPEND (-1) +#define DISABLE_IN_SUSPEND 0 +#define ENABLE_IN_SUSPEND 1 + /* Regulator active discharge flags */ enum regulator_active_discharge { REGULATOR_ACTIVE_DISCHARGE_DEFAULT, @@ -58,14 +63,15 @@ enum regulator_active_discharge { * * @uV: Operating voltage during suspend. * @mode: Operating mode during suspend. - * @enabled: Enabled during suspend. - * @disabled: Disabled during suspend. + * @enabled: operations during suspend. + * - DO_NOTHING_IN_SUSPEND + * - DISABLE_IN_SUSPEND + * - ENABLE_IN_SUSPEND */ struct regulator_state { int uV; /* suspend voltage */ unsigned int mode; /* suspend regulator operating mode */ int enabled; /* is regulator enabled in this suspend state */ - int disabled; /* is the regulator disabled in this suspend state */ }; /**