From nobody Mon Apr 6 14:57:26 2026 Received: from mail-dl1-f53.google.com (mail-dl1-f53.google.com [74.125.82.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15811358364 for ; Mon, 6 Apr 2026 04:39:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775450380; cv=none; b=iAH57ahcb0RXOH/5JOwvxWnoDoO9Ii7eG3mrXsheAnnD+ho0LOLMi/LjqGtzZSRD+WERvTFIJatCLahKko5QCeIKIxztumAxSUePMl+a8k1U6mdBjZJVsP3ZQn9+eIYNVzPyDAVByvxI2yV3FOGfc9EfAQkjZIOW+VDjlr0lhbk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775450380; c=relaxed/simple; bh=jWsQsT6/Mu9a3P6wxYYDo0MqxdW/7rVXJ/kMeejbGis=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JfxlPV+azUuMEPe2Q7hBuzwSGnl9BbGfT+xeiUg2MYPSB2Ce9QDY6H6SO7iAAm44RsFoPq5Azi1XIcFK3hwwAHatlUGxAfsboVKFVvd3+wlYYK/u62rOl8HudUroII5mqaYdNnnm9ZBCdpRJ7IZ9z9PqqyHiuRZZJ4lhToW5SEA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=G5HFP4tP; arc=none smtp.client-ip=74.125.82.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G5HFP4tP" Received: by mail-dl1-f53.google.com with SMTP id a92af1059eb24-126ea4b77adso3916992c88.1 for ; Sun, 05 Apr 2026 21:39:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775450374; x=1776055174; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=tBFK0WbO5+WLvAVMP/XY5fTWFLTdlcIvaSfOJd72QI8=; b=G5HFP4tPadZfkQBFCUPuTy0QHjXGZZusDCKuwFTdy7ODZYC6OoCQV5ZRoMPDEM+Tr9 mYmsXA/MEdAbi+PkxdhACPiR2IlyK1kLsPyyT6K1Yxx++IN58Q90MFJyHt7g9knbVjU8 /wLcFnLso1Yx9xrn5qOs4MjvdMMPgEmMNVi8QVMmWShsCpfEjMMS4Xi4Hh3QscCTJFqK lO+VMrZX0jZQJ68OXBWhq64MOwMTYFRmK3k1RBhW7ge+SpAMuyqsSV4i7wXJoGKti7+y pyU1S1L73jxZBWiFY41h/wHysiiKOwt+g+k52yPjrd0O48pieSDb3H9kT/xbRmLWARX2 4SYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775450374; x=1776055174; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=tBFK0WbO5+WLvAVMP/XY5fTWFLTdlcIvaSfOJd72QI8=; b=FO6lsc/ZsoF1G/yRmPtvUnrFw00dx9RxHZAH+jTkvkmStbriB6fcTwn9joIW2s2IpC o9CwWnqz/bHlkgtYioTTIKm/shnrBAHSF5oZjkuz9SduRejWH8r0ZJsjDJlEYyS/gCFU X86yPTl1jKw7bduxT95yflseK55oB22NMzFKlvZuLvvnRnde0gfjsk9vszxsHwiAT8rA whQtJbo21hkem0tid+BeWAFViJFnI3e77vLzfLNArrkP5RkG6CXl8nG9cMoCFcC2tD+b TyfA9mLWAvC43+YAqeg/eFPaWXt1bXh8E2Ty51uon9+DE7bcEgInqlL75UkZHrPmXnkB k5Cw== X-Forwarded-Encrypted: i=1; AJvYcCX5Zd+MOSw8iHFrLXK/4N0dyFg0V+PpcWFFmpwDmfbMVDFjHHuF2f28L0iWd/XIrdvEI+UbllrZvj5cgAQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yyv4/WtebPLea4UNkLs4NK7eDHyfLzhqzf4a48x88wMdQewCjl/ aZ1WESggPoMLegPHnmPtcDt6M1L5epRbIGnJw5LbsDirYPVN8p+QnXHg X-Gm-Gg: AeBDiesGq51EFbjGlFpk1JPcZDGe+u5VT2OwnEPeAcYCY0gOIx5CoBrHoVQohu4wz4B agCGqX1ondgA/KzYwsWlHGJ81vpkYe+ueVkx6+cyOwsTExCMys7z9O8kexePKgE9Q7xMxmsWi/G 6QSulM++7wwNaGuK6XsbEdbtvvAlVdtfsmXSkKsUnPlooaGDODz6AUPmeWy+M1ISLV4y8BCOwdN 5BhTwK4nDDSc0jquj77mkkilg4C6BpXpEK7uCQsP/GDuE0zM+/j/C2JNZ+AfcAWmTXr5UnqoSYJ SZZ0oBvpczajy68H/N0+NDszZoq4399NkBSV3bNd+RF12RBw5clLONCTnJMoTSm2dVIHuzWymiW J4354l9bHvnCihi3Hho3+yw9WUWbkQIy007L4e0dsEFxSmfSb4+4k2r7BHTBpz/uNzu4R3Ut41a ZMax4s2kQaR5de5TvOo6WxwdHDyda7M3CDMFOkB8qOATmgEk+delu+Ye4VUdGl4uC2jnUHCrf3P VxTncLEiY1/4Nc= X-Received: by 2002:a05:7022:48c:b0:128:d084:e921 with SMTP id a92af1059eb24-12bfb70dd27mr5179501c88.14.1775450374090; Sun, 05 Apr 2026 21:39:34 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:fe13:98b9:9e98:d1bb]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12bed93f861sm15182005c88.0.2026.04.05.21.39.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2026 21:39:33 -0700 (PDT) From: Dmitry Torokhov Date: Sun, 05 Apr 2026 21:39:25 -0700 Subject: [PATCH v5 3/4] iio: adc: ti-ads7950: switch to using devm_regulator_get_enable_read_voltage() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260405-ti-ads7950-facelift-v5-3-1f980ed3cf9e@gmail.com> References: <20260405-ti-ads7950-facelift-v5-0-1f980ed3cf9e@gmail.com> In-Reply-To: <20260405-ti-ads7950-facelift-v5-0-1f980ed3cf9e@gmail.com> To: Jonathan Cameron , David Lechner Cc: =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Linus Walleij , Bartosz Golaszewski , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Jonathan Cameron , Bartosz Golaszewski X-Mailer: b4 0.16-dev-6911d The regulator is enabled for the entire time the driver is bound to the device, and we only need to access it to fetch voltage, which can be done at probe time. Switch to using devm_regulator_get_enable_read_voltage() which simplifies probing and unbinding code. Suggested-by: David Lechner Reviewed-by: Bartosz Golaszewski Signed-off-by: Dmitry Torokhov --- drivers/iio/adc/ti-ads7950.c | 48 ++++++++++++----------------------------= ---- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c index c31c706c92a9..0b98c8e7385d 100644 --- a/drivers/iio/adc/ti-ads7950.c +++ b/drivers/iio/adc/ti-ads7950.c @@ -334,19 +334,9 @@ static int ti_ads7950_scan_direct(struct iio_dev *indi= o_dev, unsigned int ch) return st->single_rx; } =20 -static int ti_ads7950_get_range(struct ti_ads7950_state *st) +static unsigned int ti_ads7950_get_range(struct ti_ads7950_state *st) { - int vref; - - if (st->vref_mv) { - vref =3D st->vref_mv; - } else { - vref =3D regulator_get_voltage(st->reg); - if (vref < 0) - return vref; - - vref /=3D 1000; - } + unsigned int vref =3D st->vref_mv; =20 if (st->cmd_settings_bitmask & TI_ADS7950_CR_RANGE_5V) vref *=3D 2; @@ -375,11 +365,7 @@ static int ti_ads7950_read_raw(struct iio_dev *indio_d= ev, =20 return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: - ret =3D ti_ads7950_get_range(st); - if (ret < 0) - return ret; - - *val =3D ret; + *val =3D ti_ads7950_get_range(st); *val2 =3D (1 << chan->scan_type.realbits) - 1; =20 return IIO_VAL_FRACTIONAL; @@ -573,30 +559,25 @@ static int ti_ads7950_probe(struct spi_device *spi) spi_message_init_with_transfers(&st->scan_single_msg, st->scan_single_xfer, 3); =20 - /* Use hard coded value for reference voltage in ACPI case */ - if (ACPI_COMPANION(&spi->dev)) - st->vref_mv =3D TI_ADS7950_VA_MV_ACPI_DEFAULT; - mutex_init(&st->slock); =20 - st->reg =3D devm_regulator_get(&spi->dev, "vref"); - if (IS_ERR(st->reg)) { - ret =3D dev_err_probe(&spi->dev, PTR_ERR(st->reg), - "Failed to get regulator \"vref\"\n"); - goto error_destroy_mutex; - } + /* Use hard coded value for reference voltage in ACPI case */ + if (ACPI_COMPANION(&spi->dev)) { + st->vref_mv =3D TI_ADS7950_VA_MV_ACPI_DEFAULT; + } else { + ret =3D devm_regulator_get_enable_read_voltage(&spi->dev, "vref"); + if (ret < 0) + return dev_err_probe(&spi->dev, ret, + "Failed to get regulator \"vref\"\n"); =20 - ret =3D regulator_enable(st->reg); - if (ret) { - dev_err(&spi->dev, "Failed to enable regulator \"vref\"\n"); - goto error_destroy_mutex; + st->vref_mv =3D ret / 1000; } =20 ret =3D iio_triggered_buffer_setup(indio_dev, NULL, &ti_ads7950_trigger_handler, NULL); if (ret) { dev_err(&spi->dev, "Failed to setup triggered buffer\n"); - goto error_disable_reg; + goto error_destroy_mutex; } =20 ret =3D ti_ads7950_init_hw(st); @@ -636,8 +617,6 @@ static int ti_ads7950_probe(struct spi_device *spi) iio_device_unregister(indio_dev); error_cleanup_ring: iio_triggered_buffer_cleanup(indio_dev); -error_disable_reg: - regulator_disable(st->reg); error_destroy_mutex: mutex_destroy(&st->slock); =20 @@ -652,7 +631,6 @@ static void ti_ads7950_remove(struct spi_device *spi) gpiochip_remove(&st->chip); iio_device_unregister(indio_dev); iio_triggered_buffer_cleanup(indio_dev); - regulator_disable(st->reg); mutex_destroy(&st->slock); } =20 --=20 2.53.0.1213.gd9a14994de-goog