iio: fix write_event_config signature
authorJulien Stephan <jstephan@baylibre.com>
Thu, 31 Oct 2024 15:27:02 +0000 (16:27 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 3 Nov 2024 20:33:44 +0000 (20:33 +0000)
commitb4b42f28a0df6b9d31f0003f7dea3bddf272eaa4
tree69d5daee3a9e596a439d0d0ebea471646e76d450
parent2cc86e9409addbce898f3c40239195d914d1c168
iio: fix write_event_config signature

write_event_config callback use an int for state, but it is actually a
boolean. iio_ev_state_store is actually using kstrtobool to check user
input, then gives the converted boolean value to write_event_config.

Fix signature and update all iio drivers to use the new signature.

This patch has been partially written using coccinelle with the
following script:

$ cat iio-bool.cocci
// Options: --all-includes

virtual patch

@c1@
identifier iioinfo;
identifier wecfunc;
@@
 static const struct iio_info iioinfo = {
        ...,
        .write_event_config =
(
 wecfunc
|
 &wecfunc
),
        ...,
 };

@@
identifier c1.wecfunc;
identifier indio_dev, chan, type, dir, state;
@@
 int wecfunc(struct iio_dev *indio_dev, const struct iio_chan_spec *chan, enum iio_event_type type, enum iio_event_direction dir,
-int
+bool
 state) {
  ...
 }

make coccicheck MODE=patch COCCI=iio-bool.cocci M=drivers/iio

Unfortunately, this script didn't match all files:
* all write_event_config callbacks using iio_device_claim_direct_scoped
  were not detected and not patched.
* all files that do not assign and declare the write_event_config
  callback in the same file.

iio.h was also manually updated.

The patch was build tested using allmodconfig config.

cc: Julia Lawall <julia.lawall@inria.fr>
Signed-off-by: Julien Stephan <jstephan@baylibre.com>
Link: https://patch.msgid.link/20241031-iio-fix-write-event-config-signature-v2-7-2bcacbb517a2@baylibre.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
65 files changed:
drivers/iio/accel/adxl367.c
drivers/iio/accel/adxl372.c
drivers/iio/accel/adxl380.c
drivers/iio/accel/bma400_core.c
drivers/iio/accel/bmc150-accel-core.c
drivers/iio/accel/fxls8962af-core.c
drivers/iio/accel/kxcjk-1013.c
drivers/iio/accel/mma8452.c
drivers/iio/accel/mma9551.c
drivers/iio/accel/mma9553.c
drivers/iio/accel/sca3000.c
drivers/iio/adc/ad7091r-base.c
drivers/iio/adc/ad7291.c
drivers/iio/adc/ad799x.c
drivers/iio/adc/hi8435.c
drivers/iio/adc/max1363.c
drivers/iio/adc/pac1921.c
drivers/iio/adc/palmas_gpadc.c
drivers/iio/adc/ti-ads1015.c
drivers/iio/adc/xilinx-ams.c
drivers/iio/adc/xilinx-xadc-events.c
drivers/iio/adc/xilinx-xadc.h
drivers/iio/cdc/ad7150.c
drivers/iio/dac/ad5421.c
drivers/iio/dac/ad8460.c
drivers/iio/dummy/iio_simple_dummy.h
drivers/iio/dummy/iio_simple_dummy_events.c
drivers/iio/gyro/bmg160_core.c
drivers/iio/imu/bmi323/bmi323_core.c
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
drivers/iio/imu/kmx61.c
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
drivers/iio/light/adux1020.c
drivers/iio/light/apds9300.c
drivers/iio/light/apds9306.c
drivers/iio/light/apds9960.c
drivers/iio/light/bh1745.c
drivers/iio/light/cm36651.c
drivers/iio/light/gp2ap002.c
drivers/iio/light/gp2ap020a00f.c
drivers/iio/light/iqs621-als.c
drivers/iio/light/ltr390.c
drivers/iio/light/ltr501.c
drivers/iio/light/max44009.c
drivers/iio/light/opt3001.c
drivers/iio/light/stk3310.c
drivers/iio/light/tcs3472.c
drivers/iio/light/tsl2563.c
drivers/iio/light/tsl2591.c
drivers/iio/light/tsl2772.c
drivers/iio/light/us5182d.c
drivers/iio/light/vcnl4000.c
drivers/iio/light/veml6030.c
drivers/iio/position/iqs624-pos.c
drivers/iio/proximity/aw96103.c
drivers/iio/proximity/cros_ec_mkbp_proximity.c
drivers/iio/proximity/hx9023s.c
drivers/iio/proximity/irsd200.c
drivers/iio/proximity/sx9500.c
drivers/iio/proximity/sx_common.c
drivers/iio/proximity/sx_common.h
drivers/iio/proximity/vcnl3020.c
drivers/iio/temperature/mcp9600.c
drivers/iio/temperature/tmp007.c
include/linux/iio/iio.h