Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3639465imm; Mon, 4 Jun 2018 07:02:22 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIj4ac2Sgh8BdLgzNoLfhDoTQXdu0d5fX/n9CI75+iq14IDljHWumsJ9dOk7SJ0QKy1XrQm X-Received: by 2002:a17:902:9a06:: with SMTP id v6-v6mr21937056plp.21.1528120942376; Mon, 04 Jun 2018 07:02:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528120942; cv=none; d=google.com; s=arc-20160816; b=NvjcO/+wy80n/BdbgjPlIwQeVEhc9uwHOCZ5+Jus3CNaGMSjnUvRjL0bdX8TXYiCsv SQnya6H6ElOoElXoUAUXi2JTryEKW4/VB2cxica0DBEX1yWeJakf8GRDM81bYYqbtpzQ SCywxgpw580IDcacqws+p8t+yZSxGGfKUmWDRYWhJJ9kmWMhRykrj44ko/8iAjMzgGHR kDpdixbTUSG//uFRPAr52usb2YHg2QJAxIhCTvgmnTNieb4eWBwkk5MjuuhNfMGWeXMd UShjpmNAZ4a2tLDNV6N36kmD8zcS1hJCC8gzDb6oBMmNsu1OMssDwVucSNvwMW5+b0iU sP9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:cms-type:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=Qzwzpd34KtV8RELlkTPRplOsX5lH43gGFe3C2U2YKyE=; b=RCoaBqS4IUt3id9fCVtoOu4ZnE7jRB7It4qdkTq4yoji+rHueKEfMjOU64oZpMi9BQ EkZXlvYEGUsfTOy60Z3okJ4Xye0W7X+y83wZt7VaosCAohYxmEBN40OWn3Tm/E81DObB +2cfY8iiExHxU43DocKHWR2PKm2wTe8BXzGyIfXnDXPRgX262vEU9IoWW1s4kcDqywKZ OgZgfN2C4IENoCAw4CqNgQlBYsdJkFxNrDFSiy0CfVNZUODlkWqdrewJTDoD8PF8oYAQ Motb4WMkGqPkrHuMCgJWBsV3Lu9leON575SO4vKTbxsVzR2DUZdagxzO2FNpijJM5PJA qwVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=XWjaoqS2; 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=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g3-v6si45024809plp.594.2018.06.04.07.02.06; Mon, 04 Jun 2018 07:02:22 -0700 (PDT) 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=@samsung.com header.s=mail20170921 header.b=XWjaoqS2; 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=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753434AbeFDOAt (ORCPT + 99 others); Mon, 4 Jun 2018 10:00:49 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:58870 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753339AbeFDN76 (ORCPT ); Mon, 4 Jun 2018 09:59:58 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180604135956euoutp025601df829a564a5a7cae2291b9be2ce3~0_cSu2vvU0825308253euoutp02H; Mon, 4 Jun 2018 13:59:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180604135956euoutp025601df829a564a5a7cae2291b9be2ce3~0_cSu2vvU0825308253euoutp02H DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1528120796; bh=Qzwzpd34KtV8RELlkTPRplOsX5lH43gGFe3C2U2YKyE=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=XWjaoqS2BpwD7VBEdjEY7TlCyuOxxm4sXkpO5ndPvBHYgSEiekEZ8Tu0NwCbROEpZ Njtyd/pXotImtmmkgYF87dQ58kPlGWHhUUpxvNFy+hweO0T4u/v13HHIEQUPiauTBt R1LJw690pXeVqTnKRB4iEt/ujAmG9ERq4pSS0oRU= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180604135955eucas1p1d4076209d3185acff373e0b8174e6e64~0_cR0PHXn1802618026eucas1p1G; Mon, 4 Jun 2018 13:59:55 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 73.94.05700.BD5451B5; Mon, 4 Jun 2018 14:59:55 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180604135954eucas1p2bebd1c4970401bb957da228056f9a662~0_cQ_62FK1302513025eucas1p25; Mon, 4 Jun 2018 13:59:54 +0000 (GMT) X-AuditID: cbfec7f2-1dbff70000011644-87-5b1545db470e Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id C7.25.04183.AD5451B5; Mon, 4 Jun 2018 14:59:54 +0100 (BST) Received: from AMDC2075.DIGITAL.local ([106.120.51.25]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P9S00JH2XJF1MA0@eusync4.samsung.com>; Mon, 04 Jun 2018 14:59:54 +0100 (BST) From: Maciej Purski To: Mark Brown , Tony Lindgren Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org, Carlos Hernandez , Marek Szyprowski , Maciej Purski Subject: [PATCH 7/7] regulator: core: Enable voltage balancing Date: Mon, 04 Jun 2018 15:59:24 +0200 Message-id: <1528120764-14316-8-git-send-email-m.purski@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1528120764-14316-1-git-send-email-m.purski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrAIsWRmVeSWpSXmKPExsWy7djP87q3XUWjDWb/ELeY+vAJm8W+vt9s FpseX2O1uLxrDpvF7CX9LBYLXt5isVh75C67xf4rXg4cHt++TmLx2LSqk81j85J6j74tqxg9 jt/YzuTxeZNcAFsUl01Kak5mWWqRvl0CV8bpZzeYCnaIVfz8sI61gfG6UBcjJ4eEgIlE28yV jF2MXBxCAisYJVZu6maGcD4zSlx//5UJpur/5W6oqmWMErf63rBCOP8ZJZ7+/s3excjBwSag JbGmPR6kQUTAVeJ7z1kWkBpmgRuMElcOnWcESQgL2EnMOT+HBaSeRUBV4s47sHpeAReJEyeP MUIsk5O4ea6TGcTmBJrzdvYmsMUSAlPYJBacvMYKUeQicbJxMTOELSzx6vgWdghbRuLy5G4W CDtfovXZY6h4hcS+3tNQvdYSh49fBLOZBfgkJm2bzgxyj4QAr0RHGzRYPCQ+Xt/CBPHjPkaJ pmXfWCYwSi5gZFjFKJ5aWpybnlpsmJdarlecmFtcmpeul5yfu4kRGI+n/x3/tIPx66WkQ4wC HIxKPLwaVqLRQqyJZcWVuYcYJTiYlUR4T1sAhXhTEiurUovy44tKc1KLDzFKc7AoifPGadRF CQmkJ5akZqemFqQWwWSZODilGhiN7pzuNgy4srpxwp7dE/Ztz8x4+7o+/lHZUXcLw7hr+5ZO ea4pWfVa7sS77vTVc3vXuXvknDp5ZluReXO+yvHddq7R77gfHNscN+WC5ZMV1vWJz5J+z9kg 89xN8XBCx1LrdSbHUi5e3rO2yeVN4yIV1uCmqEZPX4Pev51LzrKkrp4uyzBjjts3JZbijERD Leai4kQAzdRYlcMCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjluLIzCtJLcpLzFFi42I5/e/4Nd1brqLRBtc/GlpMffiEzWJf3282 i02Pr7FaXN41h81i9pJ+FosFL2+xWKw9cpfdYv8VLwcOj29fJ7F4bFrVyeaxeUm9R9+WVYwe x29sZ/L4vEkugC2KyyYlNSezLLVI3y6BK+P0sxtMBTvEKn5+WMfawHhdqIuRk0NCwETi/+Vu xi5GLg4hgSWMElfP97BBOI1MEv+engByODjYBLQk1rTHgzSICLhKfO85ywJSwyxwi1Fi/auj LCAJYQE7iTnn57CA1LMIqErceQdWzyvgInHi5DFGiGVyEjfPdTKD2JxAc97O3gQWFxLIklhw ZRHzBEaeBYwMqxhFUkuLc9Nzi430ihNzi0vz0vWS83M3MQJDaduxn1t2MHa9Cz7EKMDBqMTD 22AjGi3EmlhWXJl7iFGCg1lJhPe0BVCINyWxsiq1KD++qDQntfgQozQHi5I473mDyighgfTE ktTs1NSC1CKYLBMHp1QD47Rv0y/xidlO8GGSja+ZJvlqr/HtlyZ892+bFAa5H3wwca6E/4Hb t8t6g7X+sWtve7Bi/hGHF37bKtj19PacfWN8ZalqNOtN0TnXX/C8/3n1UZC5k5fa/iOvU7ZU FW1OVTwQanUz+XfhmSkMOh9aVrzu3LakNeDgzNiY1hBnoQWzZrzpTDPQXKrEUpyRaKjFXFSc CACZGD10IQIAAA== X-CMS-MailID: 20180604135954eucas1p2bebd1c4970401bb957da228056f9a662 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180604135954eucas1p2bebd1c4970401bb957da228056f9a662 References: <20180530144505.GB5705@atomide.com> <1528120764-14316-1-git-send-email-m.purski@samsung.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Call regulator_balance_voltage() instead of set_voltage_rdev() in set_voltage_unlocked() and in enabling and disabling functions, but only if the regulator is coupled. Signed-off-by: Maciej Purski --- drivers/regulator/core.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 2a7ffb7..2dd1f99 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2296,6 +2296,11 @@ int regulator_enable(struct regulator *regulator) int ret = 0; pr_err("%s: %d\n", __func__, __LINE__); + if (rdev->coupling_desc.n_resolved != rdev->coupling_desc.n_coupled) { + rdev_err(rdev, "not all coupled regulators registered\n"); + return -EPERM; + } + if (regulator->always_on) return 0; @@ -2307,6 +2312,9 @@ int regulator_enable(struct regulator *regulator) regulator_lock_dependent(rdev); ret = _regulator_enable(rdev); + /* balance only if there are regulators coupled */ + if (rdev->coupling_desc.n_coupled > 1) + regulator_balance_voltage(rdev, PM_SUSPEND_ON); regulator_unlock_dependent(rdev); if (ret != 0 && rdev->supply) @@ -2417,6 +2425,8 @@ int regulator_disable(struct regulator *regulator) regulator_lock_dependent(rdev); ret = _regulator_disable(rdev); + if (rdev->coupling_desc.n_coupled > 1) + regulator_balance_voltage(rdev, PM_SUSPEND_ON); regulator_unlock_dependent(rdev); if (ret == 0 && rdev->supply) @@ -2470,6 +2480,8 @@ int regulator_force_disable(struct regulator *regulator) regulator_lock_dependent(rdev); regulator->uA_load = 0; ret = _regulator_force_disable(regulator->rdev); + if (rdev->coupling_desc.n_coupled > 1) + regulator_balance_voltage(rdev, PM_SUSPEND_ON); regulator_unlock_dependent(rdev); if (rdev->supply) @@ -3031,7 +3043,16 @@ static int regulator_set_voltage_unlocked(struct regulator *regulator, int old_min_uV, old_max_uV; int current_uV; +<<<<<<< HEAD pr_err("%s: %d\n", __func__, __LINE__); +======= + if (rdev->coupling_desc.n_resolved != rdev->coupling_desc.n_coupled) { + rdev_err(rdev, "not all coupled regulators registered\n"); + ret = -EPERM; + goto out; + } + +>>>>>>> fcbf6fa... regulator: core: Enable voltage balancing /* If we're setting the same range as last time the change * should be a noop (some cpufreq implementations use the same * voltage for multiple frequencies, for example). @@ -3074,7 +3095,8 @@ static int regulator_set_voltage_unlocked(struct regulator *regulator, if (ret < 0) goto out2; - ret = regulator_set_voltage_rdev(rdev, min_uV, max_uV, state); + /* for not coupled regulators this will just set the voltage */ + ret = regulator_balance_voltage(rdev, state); if (ret < 0) goto out2; -- 2.7.4