aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio/light/hid-sensor-prox.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <[email protected]>2025-05-13 06:19:37 +0000
committerGreg Kroah-Hartman <[email protected]>2025-05-13 06:19:37 +0000
commit991919e969043a4422dfebbcadf600a5d28b94e4 (patch)
tree4776f9f162c665a9735198fafc466d3e49a14253 /drivers/iio/light/hid-sensor-prox.c
parentcomedi: drivers: adl_pci9118.c: Edit file so that checkpatch.pl has 0 typo er... (diff)
parentLinux 6.15-rc6 (diff)
downloadkernel-991919e969043a4422dfebbcadf600a5d28b94e4.tar.gz
kernel-991919e969043a4422dfebbcadf600a5d28b94e4.zip
Merge 6.15-rc6 into char-misc-next
We need the iio/hyperv fixes in here as well. Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'drivers/iio/light/hid-sensor-prox.c')
-rw-r--r--drivers/iio/light/hid-sensor-prox.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/iio/light/hid-sensor-prox.c b/drivers/iio/light/hid-sensor-prox.c
index 76b76d12b388..4c65b32d34ce 100644
--- a/drivers/iio/light/hid-sensor-prox.c
+++ b/drivers/iio/light/hid-sensor-prox.c
@@ -34,9 +34,9 @@ struct prox_state {
struct iio_chan_spec channels[MAX_CHANNELS];
u32 channel2usage[MAX_CHANNELS];
u32 human_presence[MAX_CHANNELS];
- int scale_pre_decml;
- int scale_post_decml;
- int scale_precision;
+ int scale_pre_decml[MAX_CHANNELS];
+ int scale_post_decml[MAX_CHANNELS];
+ int scale_precision[MAX_CHANNELS];
unsigned long scan_mask[2]; /* One entry plus one terminator. */
int num_channels;
};
@@ -116,13 +116,15 @@ static int prox_read_raw(struct iio_dev *indio_dev,
ret_type = IIO_VAL_INT;
break;
case IIO_CHAN_INFO_SCALE:
- *val = prox_state->scale_pre_decml;
- *val2 = prox_state->scale_post_decml;
- ret_type = prox_state->scale_precision;
+ if (chan->scan_index >= prox_state->num_channels)
+ return -EINVAL;
+
+ *val = prox_state->scale_pre_decml[chan->scan_index];
+ *val2 = prox_state->scale_post_decml[chan->scan_index];
+ ret_type = prox_state->scale_precision[chan->scan_index];
break;
case IIO_CHAN_INFO_OFFSET:
- *val = hid_sensor_convert_exponent(
- prox_state->prox_attr[chan->scan_index].unit_expo);
+ *val = 0;
ret_type = IIO_VAL_INT;
break;
case IIO_CHAN_INFO_SAMP_FREQ:
@@ -249,6 +251,10 @@ static int prox_parse_report(struct platform_device *pdev,
st->prox_attr[index].size);
dev_dbg(&pdev->dev, "prox %x:%x\n", st->prox_attr[index].index,
st->prox_attr[index].report_id);
+ st->scale_precision[index] =
+ hid_sensor_format_scale(usage_id, &st->prox_attr[index],
+ &st->scale_pre_decml[index],
+ &st->scale_post_decml[index]);
index++;
}