Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3643107imm; Mon, 4 Jun 2018 07:04:51 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLdw8upp6XUB0uvcYe5KEdOlGQT33aQEHGnOOGgjIXDbDkOfZuOZdnDwZC4d60f0Hfy3ayg X-Received: by 2002:a65:5b0a:: with SMTP id y10-v6mr9341142pgq.112.1528121091238; Mon, 04 Jun 2018 07:04:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528121091; cv=none; d=google.com; s=arc-20160816; b=uPeie/kLw8MNICpA4GsLZ+LXizouIp/O04Gm9NJ7YJoz09Az6aknbs49PcrQkB/APM oA5b6SYLF+wMkKd2cg8VNEWw65YKoptxmi0lkCiEi65YBc9YERWRJ1Yag9GaiUVFv5SG vn76P2PGJIcSEWHYAuyEve2X1iRxtas9bN4DGe+GitLy+Pj2ySexCAzkeZWdJZzzBUOZ fEwPRG8BD5tZ8wycGZNveGEoSbjwks1EpmC3O2mvL6qc4QmftQxJVH8rovQAcWNTmoiU tVSvuE0kv8BHHTQ/J6CIeYwOSOO86yfnSOexfyl7btUSvBYzsUMPeZuWxttv8mjpNOJ8 ze/w== 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=BCoGYrz5ccVvlBDiI3PK72CuSRZAiGKoHoZvmoTgKig=; b=TlsNNDq98TtFDoi72c6oSlPbi983vF1d/4RFZgldZUYEJ4j8TBtilFVJYFLESdUwub /IL5Zrc9fJYQ/qHxsM9sSR+8oApQOn2kvtBBZC2ElLfbS00bRKWf5sZIWIm3BZyEeGst QEoNgJViQxSbChAtyAauqMMq3Vxp3Ndt/8NC7JjGv84kGSvhyzhsHkzjImOiLIsArf0X A8wf63SsSTmW5v2IVxNTFKlv/zvUKq73+drN8Eho2YYp2voTKwlPXGzxQ+hkRrYippfx bm8L5muVSGo2OHYmtWvH1Ax8qP713TDWIqGH+ZVEd2akKilDFe296vGUEfpgmtP/ipcG eTPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=fO9qFfzJ; 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 t17-v6si11206864pfa.170.2018.06.04.07.04.36; Mon, 04 Jun 2018 07:04:51 -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=fO9qFfzJ; 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 S1753582AbeFDOAu (ORCPT + 99 others); Mon, 4 Jun 2018 10:00:50 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:58865 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753335AbeFDN76 (ORCPT ); Mon, 4 Jun 2018 09:59:58 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180604135956euoutp02818352dacca5e3be33b873c8044f6814~0_cSXXxg20724607246euoutp02i; Mon, 4 Jun 2018 13:59:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180604135956euoutp02818352dacca5e3be33b873c8044f6814~0_cSXXxg20724607246euoutp02i DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1528120796; bh=BCoGYrz5ccVvlBDiI3PK72CuSRZAiGKoHoZvmoTgKig=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=fO9qFfzJK5lOV+slJqXbPEM8fmZmBt1OEwoZv0AkfLAH8e/HlQEXWlyZeac+Db6qh rMnamBP+XG/jUEtlwA32pxT1leu4OSMP6HhlCxgJRRfHLv2R/spKObFP+9pePwp1+K PbADqRkn1IZqXaL/sbYvbS62seI0MTkkeSAoAWxc= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180604135955eucas1p191de7bbe4f851b977ce680cd64f8f484~0_cRc9sqy2016620166eucas1p19; Mon, 4 Jun 2018 13:59:55 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id D2.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 20180604135954eucas1p2eeb77ada3ca97fecc6caec20d7e8397a~0_cQxJkmk0577105771eucas1p2W; Mon, 4 Jun 2018 13:59:54 +0000 (GMT) X-AuditID: cbfec7f2-1c1ff70000011644-86-5b1545dbaf34 Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 37.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 6/7] regulator: core: Lock dependent regulators on regulator_enable() Date: Mon, 04 Jun 2018 15:59:23 +0200 Message-id: <1528120764-14316-7-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+NgFlrLIsWRmVeSWpSXmKPExsWy7djPc7q3XUWjDTpWMltMffiEzWJf3282 i02Pr7FaXN41h81i9pJ+FosFL2+xWKw9cpfdYv8VLwcOj29fJ7F4bFrVyeaxeUm9R9+WVYwe x29sZ/L4vEkugC2KyyYlNSezLLVI3y6BK+PB8hmsBV08Fe86v7I1ME7j6mLk5JAQMJHYcPkp excjF4eQwApGiZX/rjODJIQEPjNKtH8VgClqXHyQCSK+jFFiygaohv+MEk9//wZyODjYBLQk 1rTHg9SICLhKfO85ywJSwyxwg1HiyqHzjCAJYYFwiZ09V5lA6lkEVCU6T1aBmLwCLhLb9glB rJKTuHmuE+wETqAxb2dvYgQZIyEwhU3iw5G1TBBFLhJPe+5C2cISr45vYYewZSQuT+5mgbDz JVqfPYaKV0js6z3NCmFbSxw+fhHMZhbgk5i0bTozyA0SArwSHW1QN3hI3Pm1jAnixX2MEk3b l7FNYJRcwMiwilE8tbQ4Nz212DAvtVyvODG3uDQvXS85P3cTIzAST/87/mkH49dLSYcYBTgY lXh4NaxEo4VYE8uKK3MPMUpwMCuJ8J62AArxpiRWVqUW5ccXleakFh9ilOZgURLnjdOoixIS SE8sSc1OTS1ILYLJMnFwSjUwhrdlH0vX/Ke48trzwva192K+M7z892pvSsThqLXbLic8OsN4 k5HtkvGKSVcVr4etyGPTmVgTtk8oIPRqgqcC3+PFv0QXHn/yfOWP8kKJpLNsNmE7Dpn1FEhO U5IOODFlo5HsnG0NJpyGIo+2djPKtPxXm6Pp5ifuGDQvy6R6ympb1zRuuQPJSizFGYmGWsxF xYkALtlBlMACAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplluLIzCtJLcpLzFFi42I5/e/4Nd1brqLRBlfPyFtMffiEzWJf3282 i02Pr7FaXN41h81i9pJ+FosFL2+xWKw9cpfdYv8VLwcOj29fJ7F4bFrVyeaxeUm9R9+WVYwe x29sZ/L4vEkugC2KyyYlNSezLLVI3y6BK+PB8hmsBV08Fe86v7I1ME7j6mLk5JAQMJFoXHyQ qYuRi0NIYAmjxNEPm9ghnEYmiX9PT7B1MXJwsAloSaxpjwdpEBFwlfjec5YFpIZZ4BajxPpX R1lAEsIC4RI7e64ygdSzCKhKdJ6sAjF5BVwktu0TgtglJ3HzXCcziM0JNObt7E2MILaQQJbE giuLmCcw8ixgZFjFKJJaWpybnltspFecmFtcmpeul5yfu4kRGEjbjv3csoOx613wIUYBDkYl Ht4GG9FoIdbEsuLK3EOMEhzMSiK8py2AQrwpiZVVqUX58UWlOanFhxilOViUxHnPG1RGCQmk J5akZqemFqQWwWSZODilGhgLnpvIWimbsOax9n5mPVg265jZEtc565++XFlVarMjQTK6jUPo SNu+1G39XFIXP85ewlPw/62g9I3WNd4z2XaHZ7jsFt74Z0mrPfvBjOvdUyd7Ggcfe+w7t6qa k1c6q7ulb39NqMjPCRGzjnpOzGyeE9fwxjw2pvHx1zD3FsavP6dN+5h/X06JpTgj0VCLuag4 EQBXOTDzIAIAAA== X-CMS-MailID: 20180604135954eucas1p2eeb77ada3ca97fecc6caec20d7e8397a X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180604135954eucas1p2eeb77ada3ca97fecc6caec20d7e8397a 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 Since regulator_enable() might now call regulator_balance_voltage(), it should also lock its coupled regulators and suppliers. Signed-off-by: Maciej Purski --- drivers/regulator/core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 7c57268..2a7ffb7 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2305,9 +2305,9 @@ int regulator_enable(struct regulator *regulator) return ret; } - regulator_lock(rdev); + regulator_lock_dependent(rdev); ret = _regulator_enable(rdev); - regulator_unlock(rdev); + regulator_unlock_dependent(rdev); if (ret != 0 && rdev->supply) regulator_disable(rdev->supply); @@ -2415,9 +2415,9 @@ int regulator_disable(struct regulator *regulator) if (regulator->always_on) return 0; - regulator_lock(rdev); + regulator_lock_dependent(rdev); ret = _regulator_disable(rdev); - regulator_unlock(rdev); + regulator_unlock_dependent(rdev); if (ret == 0 && rdev->supply) regulator_disable(rdev->supply); @@ -2467,10 +2467,10 @@ int regulator_force_disable(struct regulator *regulator) struct regulator_dev *rdev = regulator->rdev; int ret; - regulator_lock(rdev); + regulator_lock_dependent(rdev); regulator->uA_load = 0; ret = _regulator_force_disable(regulator->rdev); - regulator_unlock(rdev); + regulator_unlock_dependent(rdev); if (rdev->supply) while (rdev->open_count--) -- 2.7.4