Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: light: Simple conversions to iio_push_to_buffers_with_ts()

This new function allows for runtime checks on the provided source buffer
being of sufficient size to accommodate the enabled channel data layout and
the naturally aligned s64 timestamp (which is non obvious and a frequent
source of bugs in the past).

This patch includes the remaining simple cases for light sensor drivers.

Cc: Mudit Sharma <muditsharma.info@gmail.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Cc: Matti Vaittinen <mazziesaccount@gmail.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Link: https://patch.msgid.link/20250802164436.515988-17-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

+18 -15
+2 -2
drivers/iio/light/bh1745.c
··· 755 755 scan.chans[j++] = value; 756 756 } 757 757 758 - iio_push_to_buffers_with_timestamp(indio_dev, &scan, 759 - iio_get_time_ns(indio_dev)); 758 + iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan), 759 + iio_get_time_ns(indio_dev)); 760 760 761 761 err: 762 762 iio_trigger_notify_done(indio_dev->trig);
+3 -2
drivers/iio/light/hid-sensor-als.c
··· 262 262 if (!als_state->timestamp) 263 263 als_state->timestamp = iio_get_time_ns(indio_dev); 264 264 265 - iio_push_to_buffers_with_timestamp(indio_dev, &als_state->scan, 266 - als_state->timestamp); 265 + iio_push_to_buffers_with_ts(indio_dev, &als_state->scan, 266 + sizeof(als_state->scan), 267 + als_state->timestamp); 267 268 als_state->timestamp = 0; 268 269 } 269 270
+2 -2
drivers/iio/light/ltr501.c
··· 1315 1315 scan.channels[j++] = psdata & LTR501_PS_DATA_MASK; 1316 1316 } 1317 1317 1318 - iio_push_to_buffers_with_timestamp(indio_dev, &scan, 1319 - iio_get_time_ns(indio_dev)); 1318 + iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan), 1319 + iio_get_time_ns(indio_dev)); 1320 1320 1321 1321 done: 1322 1322 iio_trigger_notify_done(indio_dev->trig);
+1 -1
drivers/iio/light/opt4060.c
··· 1104 1104 } 1105 1105 } 1106 1106 1107 - iio_push_to_buffers_with_timestamp(idev, &raw, pf->timestamp); 1107 + iio_push_to_buffers_with_ts(idev, &raw, sizeof(raw), pf->timestamp); 1108 1108 err_read: 1109 1109 iio_trigger_notify_done(idev->trig); 1110 1110 return IRQ_HANDLED;
+2 -1
drivers/iio/light/rohm-bu27034.c
··· 1193 1193 */ 1194 1194 data->scan.mlux = (u32)mlux; 1195 1195 } 1196 - iio_push_to_buffers_with_timestamp(idev, &data->scan, tstamp); 1196 + iio_push_to_buffers_with_ts(idev, &data->scan, 1197 + sizeof(data->scan), tstamp); 1197 1198 } 1198 1199 1199 1200 return 0;
+2 -2
drivers/iio/light/rpr0521.c
··· 457 457 data->scan.channels, 458 458 (3 * 2) + 1); /* 3 * 16-bit + (discarded) int clear reg. */ 459 459 if (!err) 460 - iio_push_to_buffers_with_timestamp(indio_dev, 461 - &data->scan, pf->timestamp); 460 + iio_push_to_buffers_with_ts(indio_dev, &data->scan, 461 + sizeof(data->scan), pf->timestamp); 462 462 else 463 463 dev_err(&data->client->dev, 464 464 "Trigger consumer can't read from sensor.\n");
+3 -2
drivers/iio/light/si1145.c
··· 494 494 goto done; 495 495 } 496 496 497 - iio_push_to_buffers_with_timestamp(indio_dev, data->buffer, 498 - iio_get_time_ns(indio_dev)); 497 + iio_push_to_buffers_with_ts(indio_dev, data->buffer, 498 + sizeof(data->buffer), 499 + iio_get_time_ns(indio_dev)); 499 500 500 501 done: 501 502 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/light/vcnl4000.c
··· 1698 1698 if (!data_read) 1699 1699 goto end; 1700 1700 1701 - iio_push_to_buffers_with_timestamp(indio_dev, &scan, 1702 - iio_get_time_ns(indio_dev)); 1701 + iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan), 1702 + iio_get_time_ns(indio_dev)); 1703 1703 1704 1704 end: 1705 1705 iio_trigger_notify_done(indio_dev->trig);
+1 -1
drivers/iio/light/veml6030.c
··· 903 903 scan.chans[i++] = reg; 904 904 } 905 905 906 - iio_push_to_buffers_with_timestamp(iio, &scan, pf->timestamp); 906 + iio_push_to_buffers_with_ts(iio, &scan, sizeof(scan), pf->timestamp); 907 907 908 908 done: 909 909 iio_trigger_notify_done(iio->trig);