From: Jonathan Cameron <jic23@kernel.org>
To: linux-iio@vger.kernel.org
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Cosmin Tanislav" <demonsingur@gmail.com>,
"Roan van Dijk" <roan@protonic.nl>,
"Jyoti Bhayana" <jbhayana@google.com>,
"Nishant Malpani" <nish.malpani25@gmail.com>,
"Eugene Zaikonnikov" <ez@norphonic.com>,
"Jean-Baptiste Maneyrol" <jean-baptiste.maneyrol@tdk.com>,
"Shen Jianping" <Jianping.Shen@de.bosch.com>,
"Lorenzo Bianconi" <lorenzo@kernel.org>,
"Matti Vaittinen" <mazziesaccount@gmail.com>,
"Yasin Lee" <yasin.lee.x@gmail.com>,
"Andy Shevchenko" <andy.shevchenko@gmail.com>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>
Subject: [PATCH 13/37] iio: humidity: hts211: Factor out everything under direct mode claim into helper functions.
Date: Mon, 31 Mar 2025 13:12:53 +0100 [thread overview]
Message-ID: <20250331121317.1694135-14-jic23@kernel.org> (raw)
In-Reply-To: <20250331121317.1694135-1-jic23@kernel.org>
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Pulling out the functionality of read_raw() and write_raw() callbacks
so that only the mode claim is done in the initial call allows for
direct returns and simpler error handling in the new __hts211_write_raw()
/ __hts211_read_raw() functions.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
drivers/iio/humidity/hts221_core.c | 89 +++++++++++++++---------------
1 file changed, 45 insertions(+), 44 deletions(-)
diff --git a/drivers/iio/humidity/hts221_core.c b/drivers/iio/humidity/hts221_core.c
index 0be11470730c..ca4746f2ecba 100644
--- a/drivers/iio/humidity/hts221_core.c
+++ b/drivers/iio/humidity/hts221_core.c
@@ -418,31 +418,22 @@ static int hts221_read_oneshot(struct hts221_hw *hw, u8 addr, int *val)
return IIO_VAL_INT;
}
-static int hts221_read_raw(struct iio_dev *iio_dev,
- struct iio_chan_spec const *ch,
- int *val, int *val2, long mask)
+static int __hts221_read_raw(struct iio_dev *iio_dev,
+ struct iio_chan_spec const *ch,
+ int *val, int *val2, long mask)
{
struct hts221_hw *hw = iio_priv(iio_dev);
- int ret;
-
- ret = iio_device_claim_direct_mode(iio_dev);
- if (ret)
- return ret;
switch (mask) {
case IIO_CHAN_INFO_RAW:
- ret = hts221_read_oneshot(hw, ch->address, val);
- break;
+ return hts221_read_oneshot(hw, ch->address, val);
case IIO_CHAN_INFO_SCALE:
- ret = hts221_get_sensor_scale(hw, ch->type, val, val2);
- break;
+ return hts221_get_sensor_scale(hw, ch->type, val, val2);
case IIO_CHAN_INFO_OFFSET:
- ret = hts221_get_sensor_offset(hw, ch->type, val, val2);
- break;
+ return hts221_get_sensor_offset(hw, ch->type, val, val2);
case IIO_CHAN_INFO_SAMP_FREQ:
*val = hw->odr;
- ret = IIO_VAL_INT;
- break;
+ return IIO_VAL_INT;
case IIO_CHAN_INFO_OVERSAMPLING_RATIO: {
u8 idx;
const struct hts221_avg *avg;
@@ -452,62 +443,72 @@ static int hts221_read_raw(struct iio_dev *iio_dev,
avg = &hts221_avg_list[HTS221_SENSOR_H];
idx = hw->sensors[HTS221_SENSOR_H].cur_avg_idx;
*val = avg->avg_avl[idx];
- ret = IIO_VAL_INT;
- break;
+ return IIO_VAL_INT;
case IIO_TEMP:
avg = &hts221_avg_list[HTS221_SENSOR_T];
idx = hw->sensors[HTS221_SENSOR_T].cur_avg_idx;
*val = avg->avg_avl[idx];
- ret = IIO_VAL_INT;
- break;
+ return IIO_VAL_INT;
default:
- ret = -EINVAL;
- break;
+ return -EINVAL;
}
- break;
}
default:
- ret = -EINVAL;
- break;
+ return -EINVAL;
}
-
- iio_device_release_direct_mode(iio_dev);
-
- return ret;
}
-static int hts221_write_raw(struct iio_dev *iio_dev,
- struct iio_chan_spec const *chan,
- int val, int val2, long mask)
+static int hts221_read_raw(struct iio_dev *iio_dev,
+ struct iio_chan_spec const *ch,
+ int *val, int *val2, long mask)
{
- struct hts221_hw *hw = iio_priv(iio_dev);
int ret;
ret = iio_device_claim_direct_mode(iio_dev);
if (ret)
return ret;
+ ret = __hts221_read_raw(iio_dev, ch, val, val2, mask);
+
+ iio_device_release_direct_mode(iio_dev);
+
+ return ret;
+}
+
+static int __hts221_write_raw(struct iio_dev *iio_dev,
+ struct iio_chan_spec const *chan,
+ int val, long mask)
+{
+ struct hts221_hw *hw = iio_priv(iio_dev);
+
switch (mask) {
case IIO_CHAN_INFO_SAMP_FREQ:
- ret = hts221_update_odr(hw, val);
- break;
+ return hts221_update_odr(hw, val);
case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
switch (chan->type) {
case IIO_HUMIDITYRELATIVE:
- ret = hts221_update_avg(hw, HTS221_SENSOR_H, val);
- break;
+ return hts221_update_avg(hw, HTS221_SENSOR_H, val);
case IIO_TEMP:
- ret = hts221_update_avg(hw, HTS221_SENSOR_T, val);
- break;
+ return hts221_update_avg(hw, HTS221_SENSOR_T, val);
default:
- ret = -EINVAL;
- break;
+ return -EINVAL;
}
- break;
default:
- ret = -EINVAL;
- break;
+ return -EINVAL;
}
+}
+
+static int hts221_write_raw(struct iio_dev *iio_dev,
+ struct iio_chan_spec const *chan,
+ int val, int val2, long mask)
+{
+ int ret;
+
+ ret = iio_device_claim_direct_mode(iio_dev);
+ if (ret)
+ return ret;
+
+ ret = __hts221_write_raw(iio_dev, chan, val, mask);
iio_device_release_direct_mode(iio_dev);
--
2.48.1
next prev parent reply other threads:[~2025-03-31 12:14 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-31 12:12 [PATCH 00/37] IIO: Sparse friendly claim of direct mode (the rest) Jonathan Cameron
2025-03-31 12:12 ` [PATCH 01/37] iio: addac: ad74115: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-03-31 12:12 ` [PATCH 02/37] iio: chemical: ccs811: Factor out handling of read of IIO_INFO_RAW to simplify error paths Jonathan Cameron
2025-03-31 12:12 ` [PATCH 03/37] iio: chemical: ccs811: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-03-31 12:12 ` [PATCH 04/37] iio: chemical: atlas-sensor: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 05/37] iio: chemical: scd4x: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 06/37] iio: common: scmi: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 07/37] iio: common: st_sensors: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 08/37] iio: gyro: adxrs290: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 09/37] iio: health: max30102: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 10/37] iio: humidity: hdc100x: Use guard(mutex) to simplify code flow Jonathan Cameron
2025-03-31 12:12 ` [PATCH 11/37] iio: humidity: hdc100x: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-03-31 12:12 ` [PATCH 12/37] iio: humidity: hdc2010: " Jonathan Cameron
2025-04-01 6:59 ` Eugene Zaikonnikov
2025-03-31 12:12 ` Jonathan Cameron [this message]
2025-04-01 6:33 ` [PATCH 13/37] iio: humidity: hts211: Factor out everything under direct mode claim into helper functions Lorenzo Bianconi
2025-03-31 12:12 ` [PATCH 14/37] iio: humidity: hts211: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-04-01 6:34 ` Lorenzo Bianconi
2025-03-31 12:12 ` [PATCH 15/37] iio: imu: inv_icm42600: " Jonathan Cameron
2025-03-31 14:27 ` Jean-Baptiste Maneyrol
2025-03-31 12:12 ` [PATCH 16/37] iio: imu: inv_mpu6050: " Jonathan Cameron
2025-03-31 13:57 ` Jean-Baptiste Maneyrol
2025-03-31 12:12 ` [PATCH 17/37] iio: imu: smi240: " Jonathan Cameron
2025-03-31 12:12 ` [PATCH 18/37] iio: imu: st_lsm6dsx: Factor out parts of st_lsm6dsx_shub_write_raw() to allow direct returns Jonathan Cameron
2025-03-31 14:31 ` David Lechner
2025-04-01 6:28 ` Lorenzo Bianconi
2025-04-06 13:15 ` Jonathan Cameron
2025-04-01 6:27 ` Lorenzo Bianconi
2025-03-31 12:12 ` [PATCH 19/37] iio: imu: st_lsm6dsx: Switch to sparse friendly claim/release_direct() Jonathan Cameron
2025-04-01 6:31 ` Lorenzo Bianconi
2025-03-31 12:13 ` [PATCH 20/37] iio: imu: st_lsm6dsx: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-04-01 6:29 ` Lorenzo Bianconi
2025-03-31 12:13 ` [PATCH 21/37] iio: magnetometer: mag3110: Factor out core of read/write_raw() and use guard() to simplify code flow Jonathan Cameron
2025-03-31 12:13 ` [PATCH 22/37] iio: magnetometer: mag3110: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-03-31 12:13 ` [PATCH 23/37] iio: magnetometer: rm3100: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 24/37] iio: pressure: dlhl60d: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 25/37] iio: pressure: icp10100: " Jonathan Cameron
2025-03-31 14:03 ` Jean-Baptiste Maneyrol
2025-03-31 12:13 ` [PATCH 26/37] iio: pressure: mpl3115: factor out core of IIO_INFO_RAW read to simplify code flow Jonathan Cameron
2025-03-31 12:13 ` [PATCH 27/37] iio: pressure: mpl3115: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-03-31 12:13 ` [PATCH 28/37] iio: pressure: ms5611: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 29/37] iio: pressure: rohm-bm1390: " Jonathan Cameron
2025-04-01 13:14 ` Matti Vaittinen
2025-03-31 12:13 ` [PATCH 30/37] iio: pressure: zpa2326: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 31/37] iio: proximity: hx9023s: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 32/37] iio: proximity: pulsed-light: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 33/37] iio: proximity: sx9500: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 34/37] iio: temp: maxim_thermocouple: " Jonathan Cameron
2025-03-31 12:13 ` [PATCH 35/37] iio: temp: maxim_thermocouple: Drop unused mutex.h include Jonathan Cameron
2025-03-31 12:13 ` [PATCH 36/37] staging: iio: ad5933: Switch to sparse friendly iio_device_claim/release_direct() Jonathan Cameron
2025-03-31 12:13 ` [PATCH 37/37] iio: Adjust internals of handling of direct mode claiming to suit new API Jonathan Cameron
2025-03-31 13:41 ` Andy Shevchenko
2025-03-31 14:07 ` David Lechner
2025-04-05 16:34 ` Jonathan Cameron
2025-04-05 16:46 ` Andy Shevchenko
2025-04-01 19:13 ` [PATCH 00/37] IIO: Sparse friendly claim of direct mode (the rest) David Lechner
2025-04-06 13:20 ` Jonathan Cameron
2025-04-12 18:54 ` Marcelo Schmitt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250331121317.1694135-14-jic23@kernel.org \
--to=jic23@kernel.org \
--cc=Jianping.Shen@de.bosch.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=andy.shevchenko@gmail.com \
--cc=demonsingur@gmail.com \
--cc=dlechner@baylibre.com \
--cc=ez@norphonic.com \
--cc=jbhayana@google.com \
--cc=jean-baptiste.maneyrol@tdk.com \
--cc=linux-iio@vger.kernel.org \
--cc=lorenzo@kernel.org \
--cc=mazziesaccount@gmail.com \
--cc=nish.malpani25@gmail.com \
--cc=nuno.sa@analog.com \
--cc=roan@protonic.nl \
--cc=yasin.lee.x@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox