[PATCH v2] iio: proximity: sx9310: report a hysteresis of 0 when it is disabled
From: Arnav Kapoor
Date: Mon Oct 26 2026 - 07:30:43 EST
sx9310_read_hysteresis() turns a PROXHYST value of 0 (no hysteresis)
into a shift of 0 and reports the full threshold, which writing back
then usually fails with -EINVAL. Report 0, as sx9324 and sx9360 do.
Fixes: 08f0411c48f2 ("iio: sx9310: Support setting hysteresis values")
Signed-off-by: Arnav Kapoor <kapoorarnav43@xxxxxxxxx>
---
Changes in v2:
- Invert the conditional (Andy)
v1: https://lore.kernel.org/all/20261026100041.16018-1-kapoorarnav43@xxxxxxxxx/
Compile-tested only (W=1); I don't have SX9310 hardware.
drivers/iio/proximity/sx9310.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/proximity/sx9310.c b/drivers/iio/proximity/sx9310.c
index 79ba46d8a0aa..dc1b1c3f4776 100644
--- a/drivers/iio/proximity/sx9310.c
+++ b/drivers/iio/proximity/sx9310.c
@@ -446,11 +446,10 @@ static int sx9310_read_hysteresis(struct sx_common_data *data,
return ret;
regval = FIELD_GET(SX9310_REG_PROX_CTRL10_HYST_MASK, regval);
- if (!regval)
- regval = 5;
-
- /* regval is at most 5 */
- *val = pthresh >> (5 - regval);
+ if (regval)
+ *val = pthresh >> (5 - regval);
+ else
+ *val = 0;
return IIO_VAL_INT;
}
base-commit: 2ef6f5c4ee56e90c237c5f7687f09e635f7d30a9
--
2.53.0