{"id":2220043,"url":"http://patchwork.ozlabs.org/api/patches/2220043/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260405-ti-ads7950-facelift-v5-3-1f980ed3cf9e@gmail.com/","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260405-ti-ads7950-facelift-v5-3-1f980ed3cf9e@gmail.com>","list_archive_url":null,"date":"2026-04-06T04:39:25","name":"[v5,3/4] iio: adc: ti-ads7950: switch to using devm_regulator_get_enable_read_voltage()","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"4d894fda067a16616a0cd8fda7ecacdc9c723154","submitter":{"id":695,"url":"http://patchwork.ozlabs.org/api/people/695/?format=json","name":"Dmitry Torokhov","email":"dmitry.torokhov@gmail.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260405-ti-ads7950-facelift-v5-3-1f980ed3cf9e@gmail.com/mbox/","series":[{"id":498820,"url":"http://patchwork.ozlabs.org/api/series/498820/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/list/?series=498820","date":"2026-04-06T04:39:22","name":"ti-ads7950: fix gpio handling and facelift","version":5,"mbox":"http://patchwork.ozlabs.org/series/498820/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2220043/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2220043/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-gpio+bounces-34696-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=G5HFP4tP;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34696-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"G5HFP4tP\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=74.125.82.54","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fpxW63N5zz1yFt\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 06 Apr 2026 14:41:54 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 10B4B302C5FF\n\tfor <incoming@patchwork.ozlabs.org>; Mon,  6 Apr 2026 04:39:40 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9A356307494;\n\tMon,  6 Apr 2026 04:39:36 +0000 (UTC)","from mail-dl1-f54.google.com (mail-dl1-f54.google.com\n [74.125.82.54])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BAA93128DF\n\tfor <linux-gpio@vger.kernel.org>; Mon,  6 Apr 2026 04:39:34 +0000 (UTC)","by mail-dl1-f54.google.com with SMTP id\n a92af1059eb24-126ea4b77adso3916990c88.1\n        for <linux-gpio@vger.kernel.org>;\n Sun, 05 Apr 2026 21:39:34 -0700 (PDT)","from dtor-ws.sjc.corp.google.com\n ([2a00:79e0:2ebe:8:fe13:98b9:9e98:d1bb])\n        by smtp.gmail.com with ESMTPSA id\n a92af1059eb24-12bed93f861sm15182005c88.0.2026.04.05.21.39.32\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Sun, 05 Apr 2026 21:39:33 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775450376; cv=none;\n b=qUeGwJXmaWDX3Ag8iUfiWzlpkFv+LcUDWxquezHqMmWaDUlfSv/wYERHLeNbplhfTSWXljU3NMTNbxAp6NeIExJzgY9FgG1g0CWf7y9RXOWgDjigKYDfpE5ivAsZRlQJHgQj8DGfs06GPc54OXKkRmsaBQWU4xXcC4Is64ajQm8=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775450376; c=relaxed/simple;\n\tbh=jWsQsT6/Mu9a3P6wxYYDo0MqxdW/7rVXJ/kMeejbGis=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=NWDQKI5uNjGBrdT+XfV+XUjE6zseChrjlR8OxA/P4viqP/pHvL+jBFOK8ft7Jx5FdcFn8VKWjQpKlnVpIOA6CT7R9J9lhnBoZ7z95SdSle7G15eo90SzncPyBKHIXU1wamjnpwkSUjrQwqnOj2RxhdZT3YCICIlXMT13cwKCi28=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=G5HFP4tP; arc=none smtp.client-ip=74.125.82.54","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1775450374; x=1776055174;\n darn=vger.kernel.org;\n        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n         :mime-version:subject:date:from:from:to:cc:subject:date:message-id\n         :reply-to;\n        bh=tBFK0WbO5+WLvAVMP/XY5fTWFLTdlcIvaSfOJd72QI8=;\n        b=G5HFP4tPadZfkQBFCUPuTy0QHjXGZZusDCKuwFTdy7ODZYC6OoCQV5ZRoMPDEM+Tr9\n         mYmsXA/MEdAbi+PkxdhACPiR2IlyK1kLsPyyT6K1Yxx++IN58Q90MFJyHt7g9knbVjU8\n         /wLcFnLso1Yx9xrn5qOs4MjvdMMPgEmMNVi8QVMmWShsCpfEjMMS4Xi4Hh3QscCTJFqK\n         lO+VMrZX0jZQJ68OXBWhq64MOwMTYFRmK3k1RBhW7ge+SpAMuyqsSV4i7wXJoGKti7+y\n         pyU1S1L73jxZBWiFY41h/wHysiiKOwt+g+k52yPjrd0O48pieSDb3H9kT/xbRmLWARX2\n         4SYw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1775450374; x=1776055174;\n        h=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n         :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to\n         :cc:subject:date:message-id:reply-to;\n        bh=tBFK0WbO5+WLvAVMP/XY5fTWFLTdlcIvaSfOJd72QI8=;\n        b=EIHFkJmQ7+xIWp2UM9EhhDZwkvoIl8kJkg4XFhqwpTpoeFwmtLA4oCjZMs2IG2+fuh\n         kqpI53ow2FS8b2l/oWr4PM+KrOoJpA4sBAyDBZNA9iyjoTQGGZw8VfKJq4S6ybwrO1mc\n         9/+fkZtUj5k1kxHq27FT/nNu/Qxlof0tnitM71aBwsD3yd/fW7LQUXwi/0G73D5eFLo3\n         kJwjzGtQS+v/y4vVBnDFILGerKKoegCmB+igRK5KHW8Yrp2ny0lbLOyXXqUIlaGkAKVW\n         Tdt2zVal2nyZd5XciDPOUFL4dNfLOI5Us9AKbcgu4w+/7fYMTPF8es6fw8LLiDx5QHxz\n         dyLg==","X-Forwarded-Encrypted":"i=1;\n AJvYcCX2dLDIKZ21/+dWHkeX8wnxsppnba8YAAFffLpgXgOpNwN/ZeMjfitwpBwDZDDg3XvoqjWxKPtTbGIQ@vger.kernel.org","X-Gm-Message-State":"AOJu0YwdnEKM2sjdBXKSYKlkhqyzN6eXk2GGnYkh2K21N5IDm7FYK1Qt\n\toSUDABPBhlICSoEaGdrR3cJjMeb1ivgKdC6rv8YEbrnluCeTSH97VLd9","X-Gm-Gg":"AeBDiev/WBXoQWa4IAAL2+8ZNR6P/smQ4fpzY78UPNvOWd7QZBAQGzh4P4iHFU4Iy7y\n\tbnXitgrMMrEE8zCYHAdWyl25/FOvGcKZie605snvEHF1tsWPD16GXLZS+qDZGBK38QNKN+zkdFV\n\t3dsS+4o8HDQoiNhD6Zl0/WTM6nJsxKosA3xFObyKIww6iZkEVT+zz2S8b9cRFwOKyI+AzUPT2D6\n\th6n0bsyNlyKwJYCBpKBF85LrpNF71omWyM46THwMVkk5xa6begkSTeDdhefDKUkakeLy8VDCJNU\n\tGEst14kPZ6kFaS0Y/+Jk9O9thNUdBlevPPYjNbucv8vUm2dcu3hLtVSRgoheNemin+5NYpXKRFu\n\tc1hhOv74SiXcUwZa/SU6S3C+wwZw66chhDNykWm1+M7MEBVVQWM/6s+a4af3jv52tbw7xRWkcxE\n\tE/1CxY8KdpXwMM7M6iOWYMFMadtEYQMR30wNjrD0Du49sgYAXkmg9qP0dMYVF7LJk/1RekZf81V\n\tqFH+XdxT9KHldM=","X-Received":"by 2002:a05:7022:48c:b0:128:d084:e921 with SMTP id\n a92af1059eb24-12bfb70dd27mr5179501c88.14.1775450374090;\n        Sun, 05 Apr 2026 21:39:34 -0700 (PDT)","From":"Dmitry Torokhov <dmitry.torokhov@gmail.com>","Date":"Sun, 05 Apr 2026 21:39:25 -0700","Subject":"[PATCH v5 3/4] iio: adc: ti-ads7950: switch to using\n devm_regulator_get_enable_read_voltage()","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","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 <jic23@kernel.org>,\n David Lechner <dlechner@baylibre.com>","Cc":"=?utf-8?q?Nuno_S=C3=A1?= <nuno.sa@analog.com>,\n  Andy Shevchenko <andy@kernel.org>, Linus Walleij <linusw@kernel.org>,\n  Bartosz Golaszewski <brgl@kernel.org>, linux-iio@vger.kernel.org,\n  linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,\n  Jonathan Cameron <Jonathan.Cameron@huawei.com>,\n  Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>","X-Mailer":"b4 0.16-dev-6911d"},"content":"The regulator is enabled for the entire time the driver is bound to the\ndevice, and we only need to access it to fetch voltage, which can be\ndone at probe time.\n\nSwitch to using devm_regulator_get_enable_read_voltage() which\nsimplifies probing and unbinding code.\n\nSuggested-by: David Lechner <dlechner@baylibre.com>\nReviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>\nSigned-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>\n---\n drivers/iio/adc/ti-ads7950.c | 48 ++++++++++++--------------------------------\n 1 file changed, 13 insertions(+), 35 deletions(-)","diff":"diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/iio/adc/ti-ads7950.c\nindex c31c706c92a9..0b98c8e7385d 100644\n--- a/drivers/iio/adc/ti-ads7950.c\n+++ b/drivers/iio/adc/ti-ads7950.c\n@@ -334,19 +334,9 @@ static int ti_ads7950_scan_direct(struct iio_dev *indio_dev, unsigned int ch)\n \treturn st->single_rx;\n }\n \n-static int ti_ads7950_get_range(struct ti_ads7950_state *st)\n+static unsigned int ti_ads7950_get_range(struct ti_ads7950_state *st)\n {\n-\tint vref;\n-\n-\tif (st->vref_mv) {\n-\t\tvref = st->vref_mv;\n-\t} else {\n-\t\tvref = regulator_get_voltage(st->reg);\n-\t\tif (vref < 0)\n-\t\t\treturn vref;\n-\n-\t\tvref /= 1000;\n-\t}\n+\tunsigned int vref = st->vref_mv;\n \n \tif (st->cmd_settings_bitmask & TI_ADS7950_CR_RANGE_5V)\n \t\tvref *= 2;\n@@ -375,11 +365,7 @@ static int ti_ads7950_read_raw(struct iio_dev *indio_dev,\n \n \t\treturn IIO_VAL_INT;\n \tcase IIO_CHAN_INFO_SCALE:\n-\t\tret = ti_ads7950_get_range(st);\n-\t\tif (ret < 0)\n-\t\t\treturn ret;\n-\n-\t\t*val = ret;\n+\t\t*val = ti_ads7950_get_range(st);\n \t\t*val2 = (1 << chan->scan_type.realbits) - 1;\n \n \t\treturn IIO_VAL_FRACTIONAL;\n@@ -573,30 +559,25 @@ static int ti_ads7950_probe(struct spi_device *spi)\n \tspi_message_init_with_transfers(&st->scan_single_msg,\n \t\t\t\t\tst->scan_single_xfer, 3);\n \n-\t/* Use hard coded value for reference voltage in ACPI case */\n-\tif (ACPI_COMPANION(&spi->dev))\n-\t\tst->vref_mv = TI_ADS7950_VA_MV_ACPI_DEFAULT;\n-\n \tmutex_init(&st->slock);\n \n-\tst->reg = devm_regulator_get(&spi->dev, \"vref\");\n-\tif (IS_ERR(st->reg)) {\n-\t\tret = dev_err_probe(&spi->dev, PTR_ERR(st->reg),\n-\t\t\t\t     \"Failed to get regulator \\\"vref\\\"\\n\");\n-\t\tgoto error_destroy_mutex;\n-\t}\n+\t/* Use hard coded value for reference voltage in ACPI case */\n+\tif (ACPI_COMPANION(&spi->dev)) {\n+\t\tst->vref_mv = TI_ADS7950_VA_MV_ACPI_DEFAULT;\n+\t} else {\n+\t\tret = devm_regulator_get_enable_read_voltage(&spi->dev, \"vref\");\n+\t\tif (ret < 0)\n+\t\t\treturn dev_err_probe(&spi->dev, ret,\n+\t\t\t\t\t     \"Failed to get regulator \\\"vref\\\"\\n\");\n \n-\tret = regulator_enable(st->reg);\n-\tif (ret) {\n-\t\tdev_err(&spi->dev, \"Failed to enable regulator \\\"vref\\\"\\n\");\n-\t\tgoto error_destroy_mutex;\n+\t\tst->vref_mv = ret / 1000;\n \t}\n \n \tret = iio_triggered_buffer_setup(indio_dev, NULL,\n \t\t\t\t\t &ti_ads7950_trigger_handler, NULL);\n \tif (ret) {\n \t\tdev_err(&spi->dev, \"Failed to setup triggered buffer\\n\");\n-\t\tgoto error_disable_reg;\n+\t\tgoto error_destroy_mutex;\n \t}\n \n \tret = ti_ads7950_init_hw(st);\n@@ -636,8 +617,6 @@ static int ti_ads7950_probe(struct spi_device *spi)\n \tiio_device_unregister(indio_dev);\n error_cleanup_ring:\n \tiio_triggered_buffer_cleanup(indio_dev);\n-error_disable_reg:\n-\tregulator_disable(st->reg);\n error_destroy_mutex:\n \tmutex_destroy(&st->slock);\n \n@@ -652,7 +631,6 @@ static void ti_ads7950_remove(struct spi_device *spi)\n \tgpiochip_remove(&st->chip);\n \tiio_device_unregister(indio_dev);\n \tiio_triggered_buffer_cleanup(indio_dev);\n-\tregulator_disable(st->reg);\n \tmutex_destroy(&st->slock);\n }\n \n","prefixes":["v5","3/4"]}