From nobody Mon Feb 9 20:32:03 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C1CEC83F01 for ; Wed, 30 Aug 2023 22:47:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242605AbjH3Wru (ORCPT ); Wed, 30 Aug 2023 18:47:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241389AbjH3Wrt (ORCPT ); Wed, 30 Aug 2023 18:47:49 -0400 Received: from rere.qmqm.pl (rere.qmqm.pl [91.227.64.183]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DEACCF1 for ; Wed, 30 Aug 2023 15:47:41 -0700 (PDT) Received: from remote.user (localhost [127.0.0.1]) by rere.qmqm.pl (Postfix) with ESMTPSA id 4Rbd341VwFzgk; Wed, 30 Aug 2023 23:38:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1; t=1693431536; bh=3j5YwA8sQZLPwKcy65ogiVFJLRLsV0GO/Ut6EzwlnMQ=; h=Date:In-Reply-To:References:Subject:From:To:Cc:From; b=BKvxto3e/ZjAZxKx4FTEFDuoMlZOIAIUrlU9OI0wCEyCgbcE9chjRj2nveFserEAo rm3+XV8qEhLdOTCgx4ScIXHWLL9xLoNLti0wkEni52XWYyQ8RmHk0NVoQ48n/rWfz1 +AbnSxOnHiYJmFzpA9UoyW1nV+J+6JetCoblaboPTHtGzAparZBv2cPHCv55+VknNy /P4No4b4/C7a4izgDQvUJ39+n1X+Jd3NSE42h5kbq4moLjqpMZ6NSJXeAYSmo5u6IM Omo2lGAQA9YgnHqep1ZkNwxnk+2rNcYtxpnofc2bfANfSMn5Sk5gdOFsfsnXILeYCK +WilOrOpnSTsg== X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at mail Date: Wed, 30 Aug 2023 23:38:56 +0200 Message-Id: In-Reply-To: References: Subject: [PATCH 5/9] regulator/core: regulator_ena_gpio_ctrl: pull in ena_gpio state handling MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= To: Liam Girdwood , Mark Brown Cc: linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Deduplicate `ena_gpio_state` handling by pulling it into regulator_ena_gpio_ctrl(). Signed-off-by: Micha=C5=82 Miros=C5=82aw --- drivers/regulator/core.c | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 63d16fe59e84..c8d1b12ee43b 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2601,6 +2601,9 @@ static int regulator_ena_gpio_ctrl(struct regulator_d= ev *rdev, bool enable) if (!pin) return -EINVAL; =20 + if (rdev->ena_gpio_state =3D=3D enable) + return 0; + if (enable) { /* Enable GPIO at initial use */ if (pin->enable_count =3D=3D 0) @@ -2608,18 +2611,14 @@ static int regulator_ena_gpio_ctrl(struct regulator= _dev *rdev, bool enable) =20 pin->enable_count++; } else { - if (pin->enable_count > 1) { - pin->enable_count--; - return 0; - } - /* Disable GPIO if not used */ - if (pin->enable_count <=3D 1) { + if (pin->enable_count-- <=3D 1) { gpiod_set_value_cansleep(pin->gpiod, 0); pin->enable_count =3D 0; } } =20 + rdev->ena_gpio_state =3D enable; return 0; } =20 @@ -2720,12 +2719,9 @@ static int _regulator_do_enable(struct regulator_dev= *rdev) } =20 if (rdev->ena_pin) { - if (!rdev->ena_gpio_state) { - ret =3D regulator_ena_gpio_ctrl(rdev, true); - if (ret < 0) - return ret; - rdev->ena_gpio_state =3D 1; - } + ret =3D regulator_ena_gpio_ctrl(rdev, true); + if (ret < 0) + return ret; } else if (rdev->desc->ops->enable) { ret =3D rdev->desc->ops->enable(rdev); if (ret < 0) @@ -2938,13 +2934,9 @@ static int _regulator_do_disable(struct regulator_de= v *rdev) trace_regulator_disable(rdev_get_name(rdev)); =20 if (rdev->ena_pin) { - if (rdev->ena_gpio_state) { - ret =3D regulator_ena_gpio_ctrl(rdev, false); - if (ret < 0) - return ret; - rdev->ena_gpio_state =3D 0; - } - + ret =3D regulator_ena_gpio_ctrl(rdev, false); + if (ret < 0) + return ret; } else if (rdev->desc->ops->disable) { ret =3D rdev->desc->ops->disable(rdev); if (ret !=3D 0) --=20 2.39.2