summaryrefslogtreecommitdiff
path: root/drivers/iio/proximity
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/iio/proximity')
-rw-r--r--drivers/iio/proximity/as3935.c6
-rw-r--r--drivers/iio/proximity/d3323aa.c2
-rw-r--r--drivers/iio/proximity/hx9023s.c2
-rw-r--r--drivers/iio/proximity/irsd200.c2
-rw-r--r--drivers/iio/proximity/mb1232.c4
-rw-r--r--drivers/iio/proximity/srf04.c4
-rw-r--r--drivers/iio/proximity/sx_common.c2
-rw-r--r--drivers/iio/proximity/vcnl3020.c6
-rw-r--r--drivers/iio/proximity/vl53l0x-i2c.c4
-rw-r--r--drivers/iio/proximity/vl53l1x-i2c.c43
10 files changed, 32 insertions, 43 deletions
diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c
index 3406232822cb..d7f43c3af165 100644
--- a/drivers/iio/proximity/as3935.c
+++ b/drivers/iio/proximity/as3935.c
@@ -428,10 +428,8 @@ static int as3935_probe(struct spi_device *spi)
dev_name(dev),
indio_dev);
- if (ret) {
- dev_err(dev, "unable to request irq\n");
+ if (ret)
return ret;
- }
ret = devm_iio_device_register(dev, indio_dev);
if (ret < 0) {
@@ -448,7 +446,7 @@ static const struct of_device_id as3935_of_match[] = {
MODULE_DEVICE_TABLE(of, as3935_of_match);
static const struct spi_device_id as3935_id[] = {
- {"as3935", 0},
+ { .name = "as3935" },
{ }
};
MODULE_DEVICE_TABLE(spi, as3935_id);
diff --git a/drivers/iio/proximity/d3323aa.c b/drivers/iio/proximity/d3323aa.c
index d40e3dff9eb1..1f43c1fed342 100644
--- a/drivers/iio/proximity/d3323aa.c
+++ b/drivers/iio/proximity/d3323aa.c
@@ -771,7 +771,7 @@ static int d3323aa_probe(struct platform_device *pdev)
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
dev_name(dev), indio_dev);
if (ret)
- return dev_err_probe(dev, ret, "Could not request IRQ\n");
+ return ret;
ret = d3323aa_setup(indio_dev, D3323AA_LP_FILTER_FREQ_DEFAULT_IDX,
D3323AA_FILTER_GAIN_DEFAULT_IDX,
diff --git a/drivers/iio/proximity/hx9023s.c b/drivers/iio/proximity/hx9023s.c
index a6ff7cbe9e65..0199a6351a46 100644
--- a/drivers/iio/proximity/hx9023s.c
+++ b/drivers/iio/proximity/hx9023s.c
@@ -1139,7 +1139,7 @@ static int hx9023s_probe(struct i2c_client *client)
IRQF_ONESHOT,
"hx9023s_event", indio_dev);
if (ret)
- return dev_err_probe(dev, ret, "irq request failed\n");
+ return ret;
data->trig = devm_iio_trigger_alloc(dev, "%s-dev%d",
indio_dev->name,
diff --git a/drivers/iio/proximity/irsd200.c b/drivers/iio/proximity/irsd200.c
index 65af31d43453..b3db7f3a49f6 100644
--- a/drivers/iio/proximity/irsd200.c
+++ b/drivers/iio/proximity/irsd200.c
@@ -910,7 +910,7 @@ static int irsd200_probe(struct i2c_client *client)
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
NULL, indio_dev);
if (ret)
- return dev_err_probe(data->dev, ret, "Could not request irq\n");
+ return ret;
trigger = devm_iio_trigger_alloc(data->dev, "%s-dev%d", indio_dev->name,
iio_device_id(indio_dev));
diff --git a/drivers/iio/proximity/mb1232.c b/drivers/iio/proximity/mb1232.c
index eab881b0cdc7..accfc296e1f0 100644
--- a/drivers/iio/proximity/mb1232.c
+++ b/drivers/iio/proximity/mb1232.c
@@ -213,10 +213,8 @@ static int mb1232_probe(struct i2c_client *client)
if (data->irqnr > 0) {
ret = devm_request_irq(dev, data->irqnr, mb1232_handle_irq,
IRQF_TRIGGER_FALLING, id->name, indio_dev);
- if (ret < 0) {
- dev_err(dev, "request_irq: %d\n", ret);
+ if (ret)
return ret;
- }
}
ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
diff --git a/drivers/iio/proximity/srf04.c b/drivers/iio/proximity/srf04.c
index e03f3f0dee04..4e042214df29 100644
--- a/drivers/iio/proximity/srf04.c
+++ b/drivers/iio/proximity/srf04.c
@@ -303,10 +303,8 @@ static int srf04_probe(struct platform_device *pdev)
ret = devm_request_irq(dev, data->irqnr, srf04_handle_irq,
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
pdev->name, indio_dev);
- if (ret < 0) {
- dev_err(data->dev, "request_irq: %d\n", ret);
+ if (ret)
return ret;
- }
platform_set_drvdata(pdev, indio_dev);
diff --git a/drivers/iio/proximity/sx_common.c b/drivers/iio/proximity/sx_common.c
index 59b35e40739b..4d4937395d9a 100644
--- a/drivers/iio/proximity/sx_common.c
+++ b/drivers/iio/proximity/sx_common.c
@@ -517,7 +517,7 @@ int sx_common_probe(struct i2c_client *client,
IRQF_ONESHOT,
"sx_event", indio_dev);
if (ret)
- return dev_err_probe(dev, ret, "No IRQ\n");
+ return ret;
data->trig = devm_iio_trigger_alloc(dev, "%s-dev%d",
indio_dev->name,
diff --git a/drivers/iio/proximity/vcnl3020.c b/drivers/iio/proximity/vcnl3020.c
index 7f417372566a..6b0d7a9038d9 100644
--- a/drivers/iio/proximity/vcnl3020.c
+++ b/drivers/iio/proximity/vcnl3020.c
@@ -638,12 +638,8 @@ static int vcnl3020_probe(struct i2c_client *client)
NULL, vcnl3020_handle_irq_thread,
IRQF_ONESHOT, indio_dev->name,
indio_dev);
- if (rc) {
- dev_err(&client->dev,
- "Error (%d) irq request failed (%u)\n", rc,
- client->irq);
+ if (rc)
return rc;
- }
}
return devm_iio_device_register(&client->dev, indio_dev);
diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl53l0x-i2c.c
index b7127c3c52d2..9fe14ceb8be7 100644
--- a/drivers/iio/proximity/vl53l0x-i2c.c
+++ b/drivers/iio/proximity/vl53l0x-i2c.c
@@ -127,10 +127,8 @@ static int vl53l0x_configure_irq(struct i2c_client *client,
ret = devm_request_threaded_irq(&client->dev, client->irq,
NULL, vl53l0x_threaded_irq,
irq_flags | IRQF_ONESHOT, indio_dev->name, indio_dev);
- if (ret) {
- dev_err(&client->dev, "devm_request_irq error: %d\n", ret);
+ if (ret)
return ret;
- }
ret = i2c_smbus_write_byte_data(data->client,
VL_REG_SYSTEM_INTERRUPT_CONFIG_GPIO,
diff --git a/drivers/iio/proximity/vl53l1x-i2c.c b/drivers/iio/proximity/vl53l1x-i2c.c
index dc4ffbc95d1f..bce238d1b6de 100644
--- a/drivers/iio/proximity/vl53l1x-i2c.c
+++ b/drivers/iio/proximity/vl53l1x-i2c.c
@@ -2,7 +2,7 @@
/*
* Support for ST VL53L1X FlightSense ToF Ranging Sensor on a i2c bus.
*
- * Copyright (C) 2026 Siratul Islam <email@sirat.me>
+ * Copyright (C) 2026 Siratul Islam <siratul.islam@linux.dev>
*
* Datasheet available at
* <https://www.st.com/resource/en/datasheet/vl53l1x.pdf>
@@ -42,6 +42,7 @@
#define VL53L1X_REG_SOFT_RESET 0x0000
#define VL53L1X_REG_VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND 0x0008
#define VL53L1X_REG_VHV_CONFIG__INIT 0x000B
+#define VL53L1X_REG_DEFAULT_CONFIG 0x002D
#define VL53L1X_REG_GPIO_HV_MUX__CTRL 0x0030
#define VL53L1X_REG_GPIO__TIO_HV_STATUS 0x0031
#define VL53L1X_REG_SYSTEM__INTERRUPT_CONFIG_GPIO 0x0046
@@ -63,7 +64,6 @@
#define VL53L1X_REG_RESULT__OSC_CALIBRATE_VAL 0x00DE
#define VL53L1X_REG_FIRMWARE__SYSTEM_STATUS 0x00E5
#define VL53L1X_REG_IDENTIFICATION__MODEL_ID 0x010F
-#define VL53L1X_REG_DEFAULT_CONFIG 0x002D
#define VL53L1X_MODEL_ID_VAL 0xEACC
@@ -81,6 +81,9 @@
#define VL53L1X_OSC_CALIBRATE_MASK GENMASK(9, 0)
+#define VL53L1X_FIRMWARE__SYSTEM_STATUS_BOOTED BIT(0)
+#define VL53L1X_GPIO__TIO_HV_STATUS_DATA_READY BIT(0)
+
/* Inter-measurement period uses PLL divider with 1.075 oscillator correction */
static const struct u32_fract vl53l1x_osc_correction = {
.numerator = 1075,
@@ -190,6 +193,17 @@ static int vl53l1x_stop_ranging(struct vl53l1x_data *data)
VL53L1X_MODE_START_STOP);
}
+static int vl53l1x_wait_data_ready(struct vl53l1x_data *data)
+{
+ unsigned int val;
+
+ /* 1ms poll, 1s timeout covers max timing budgets (per ST Ultra Lite Driver) */
+ return regmap_read_poll_timeout(data->regmap,
+ VL53L1X_REG_GPIO__TIO_HV_STATUS, val,
+ (val & VL53L1X_GPIO__TIO_HV_STATUS_DATA_READY) != data->gpio_polarity,
+ 1 * USEC_PER_MSEC, 1 * USEC_PER_SEC);
+}
+
/*
* Default configuration blob from ST's VL53L1X Ultra Lite Driver
* (STSW-IMG009).
@@ -229,10 +243,9 @@ static int vl53l1x_chip_init(struct vl53l1x_data *data)
}
ret = regmap_read_poll_timeout(data->regmap,
- VL53L1X_REG_FIRMWARE__SYSTEM_STATUS, val,
- val & BIT(0),
- 1 * USEC_PER_MSEC,
- 100 * USEC_PER_MSEC);
+ VL53L1X_REG_FIRMWARE__SYSTEM_STATUS,
+ val, val & VL53L1X_FIRMWARE__SYSTEM_STATUS_BOOTED,
+ 1 * USEC_PER_MSEC, 100 * USEC_PER_MSEC);
if (ret)
return dev_err_probe(dev, ret, "firmware boot timeout\n");
@@ -260,12 +273,7 @@ static int vl53l1x_chip_init(struct vl53l1x_data *data)
if (ret)
return ret;
- /* 1ms poll, 1s timeout covers max timing budgets (per ST Ultra Lite Driver) */
- ret = regmap_read_poll_timeout(data->regmap,
- VL53L1X_REG_GPIO__TIO_HV_STATUS, val,
- (val & 1) != data->gpio_polarity,
- 1 * USEC_PER_MSEC,
- 1000 * USEC_PER_MSEC);
+ ret = vl53l1x_wait_data_ready(data);
if (ret)
return ret;
@@ -460,14 +468,7 @@ static int vl53l1x_read_proximity(struct vl53l1x_data *data, int *val)
if (!wait_for_completion_timeout(&data->completion, HZ))
return -ETIMEDOUT;
} else {
- unsigned int rdy;
-
- /* 1ms poll, 1s timeout covers max timing budgets (per ST Ultra Lite Driver) */
- ret = regmap_read_poll_timeout(data->regmap,
- VL53L1X_REG_GPIO__TIO_HV_STATUS, rdy,
- (rdy & 1) != data->gpio_polarity,
- 1 * USEC_PER_MSEC,
- 1000 * USEC_PER_MSEC);
+ ret = vl53l1x_wait_data_ready(data);
if (ret)
return ret;
}
@@ -750,6 +751,6 @@ static struct i2c_driver vl53l1x_driver = {
};
module_i2c_driver(vl53l1x_driver);
-MODULE_AUTHOR("Siratul Islam <email@sirat.me>");
+MODULE_AUTHOR("Siratul Islam <siratul.islam@linux.dev>");
MODULE_DESCRIPTION("ST VL53L1X ToF ranging sensor driver");
MODULE_LICENSE("Dual BSD/GPL");