From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) (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 D4D5D4219E9 for ; Mon, 2 Mar 2026 16:37:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772469472; cv=none; b=JUIBPcXUWCpcbnEtbAGP12eBGC2QSQY2wl1h7S/8Cy8epY8hu2a07NReF1cOJwDS/ADxFLqTXoynEAb1ed2hvZq/EhGh+ERF/MAmG6fskEX30KeKg1I7535oqmjpdK5mg5CAl8V8jGSrz9fr4KterxgP6eZVnPwyrSOz03WZwVw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772469472; c=relaxed/simple; bh=ykMkC9YqfTuzviXpOcOVFaMTvIEjFj3vSKG49Rvv/3M=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=SSgyyGiUj3CtkrP9g+6gYVBzg0I4JUUB6BJRYrxm1Z2cRi8uyMkdy0hRhvgw5cXJrVxnt7XNO1lswlbYOTUUEixp2I7ianeyfAzjLVsWydcSocXB7uMZFMOyaCsAe6hGZQ3Q94zBExiyrWiX0AxYr6Wz/ggFYQAw81XKkSlXJOk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=JWOF6qti; arc=none smtp.client-ip=209.85.167.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="JWOF6qti" Received: by mail-oi1-f179.google.com with SMTP id 5614622812f47-46413b2c3d8so1908886b6e.2 for ; Mon, 02 Mar 2026 08:37:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1772469468; x=1773074268; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Pk8NJyq+o1G5+FfQKTAplUbfGHDKqbnJEUobZnnfqv8=; b=JWOF6qtifweAUEzObgZEXwt8eBbxXee8KBct0a+z5yZSHE9o1iEgBCHhW7ISrhl3S2 9mJlQZRddkFVe5TryZRss9HM09cvRzsiB2qhcGEKgWTP7MnU3gCIRaLzfwep78ZM1ym2 4xTToepG9Tg5brBS+lWFtKuS/dr5WkSbNdl9WBL3165lZ4joa5n6cE4sEYfMTECP5H9t +ZQSsCUlaKWZjJBtnl1A1UrPjP7PWF9WSUz2cSgMIOYcP3nZmXl9C/bzvU4LTMPgPa3t 8H0GKIODIqBmvjDDOmIn9zFRgyt58HsGSDnETlWOP/xipFVdb2+MYGRJfLX8N83C62yl j1Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772469468; x=1773074268; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Pk8NJyq+o1G5+FfQKTAplUbfGHDKqbnJEUobZnnfqv8=; b=MhIVqyl/VEuB2AWJL6yZ3wR0YPZdXqXkIr1DbQxFfIQB0tWZdtYyN9rKuu/UM27cB3 clWryrVUrmRjEYcxbZSbOQFiGSDmQJTUuf84t1xyf/nVryLdxjvdpPOFK17TeGVUbs8R m100i2RCeDd0jnj8nQmx3FP9GjB5wNf1m3yLatDYDgcFfjeVbks7imYZrZ/A4lvBCwlS GGf7+q65QNDXFMsKyIbIT+7YDwc6BSv9ivB1ON9TEClfXvkHyUVQv22kr/Be6lFIxNUL v/NrstZqOLnaKgw7FGUITXFTYvg3uEGv0PQfcM4VX64yNJT3nfOqRso25P2PZNSRrH/S Yodw== X-Forwarded-Encrypted: i=1; AJvYcCVeBlaDfbI7b4ea41O/wvjKEGkOiT/JgSo3abvFNdk+JJqim/e3gIVaulNEEueW8ItDGAFkD1LORZ8U0Xw=@vger.kernel.org X-Gm-Message-State: AOJu0YznzD9d5FVsm3SJUT9sUbhmm7Jre8KKwZF5HqeUukR5ZVDsgGXD Ffr5fQkPL3Z2WCeZASo7gLIqS7bDkig70Zga4p+p9jkQpEcUjF7tOedIZTU7UcbRY8U= X-Gm-Gg: ATEYQzyqh6rAGXwMt7F/kz1pARB8FI6rgAL6zXLj3WU+QeTL2ve6hvwo5HtKw9UwEHG 6RBhaOkSXN8IjnbDJfOVOCf+gRNTsujqcV5297VdSvIAtT6SHaEd0pXA1++yKkkx1duLsIfqpBr TiVglS1tMfZh7k56liDeCeF6HRbhtGF2egn8C1Rt+zVxcEkL1k5aJFoao5jRpRB4tQgKQ9lb8yF +g9OHJIRpZV2ZjUe8M89KwpN8fOjj/ZjEj6X34cVdLd40iqValHOTjvGukO5Soco5kI8mCyImRG BIIMKInz6zlhDF8kAG9sxd7fLPp2relpUGgKKB989j9isFWDVXsqawP0U+M+7TsBCWUw45HfG5M FAtgY4vpLhANVvZkzlnGoO+JEJlzDI5oLgdlq5xH2SbbuRA7385i0ztPCB8HTx1s0IZaRqnYxm3 FKp0ADZFIm0xLxkK8bdAWDDWsCl0sJ53zFYhWtE5g8u7A8UKV6wmIg0+/pQcufGMEVllJJ8Thx1 w== X-Received: by 2002:a05:6808:30a5:b0:455:f0e4:4f89 with SMTP id 5614622812f47-464bea4145cmr5801292b6e.3.1772469467762; Mon, 02 Mar 2026 08:37:47 -0800 (PST) Received: from ?IPV6:2600:8803:e7e4:500:4c09:7c6b:bc48:f2f7? ([2600:8803:e7e4:500:4c09:7c6b:bc48:f2f7]) by smtp.gmail.com with ESMTPSA id 5614622812f47-464bb59b66fsm7836943b6e.10.2026.03.02.08.37.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 Mar 2026 08:37:47 -0800 (PST) Message-ID: <6b6684d8-180c-49c2-9bce-e9b9f246fae4@baylibre.com> Date: Mon, 2 Mar 2026 10:37:46 -0600 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 2/4] iio: adc: ad799x: cache regulator voltages during probe To: Archit Anant , jic23@kernel.org, lars@metafoo.de, Michael.Hennerich@analog.com Cc: nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org References: <20260302130632.29144-1-architanant5@gmail.com> <20260302130632.29144-3-architanant5@gmail.com> Content-Language: en-US From: David Lechner In-Reply-To: <20260302130632.29144-3-architanant5@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 3/2/26 7:06 AM, Archit Anant wrote: > Reading the regulator voltage via regulator_get_voltage() can be a slow > operation. Since the reference voltages for this ADC are not expected to > change at runtime, it is inefficient to query the regulator API every > time userspace reads the IIO_CHAN_INFO_SCALE attribute. > > Cache the VCC and VREF voltages in the state structure during probe(). > This improves the performance of ad799x_read_raw() and removes the > dependency on the regulator pointers during fast-path reads. > > Suggested-by: Jonathan Cameron > Signed-off-by: Archit Anant > --- > drivers/iio/adc/ad799x.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c > index 7775be874081..35e0589428d0 100644 > --- a/drivers/iio/adc/ad799x.c > +++ b/drivers/iio/adc/ad799x.c > @@ -135,6 +135,10 @@ struct ad799x_state { > u16 config; > > unsigned int transfer_size; > + > + int vcc_uv; > + int vref_uv; > + > IIO_DECLARE_DMA_BUFFER_WITH_TS(__be16, rx_buf, AD799X_MAX_CHANNELS); > }; > > @@ -303,9 +307,9 @@ static int ad799x_read_raw(struct iio_dev *indio_dev, > return IIO_VAL_INT; > case IIO_CHAN_INFO_SCALE: > if (st->vref) > - ret = regulator_get_voltage(st->vref); > + ret = st->vref_uv; > else > - ret = regulator_get_voltage(st->reg); > + ret = st->vcc_uv; > > if (ret < 0) > return ret; This can be simplified even more. See reply to v2. We could even move the if statement to probe and only add one state variable.