[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2495ad98-79ca-486f-ab80-03344a55d2f2@kernel.org>
Date: Tue, 20 Jan 2026 11:42:51 +0100
From: Krzysztof Kozlowski <krzk@...nel.org>
To: petr.hodina@...tonmail.com, Song Qiang <songqiang1304521@...il.com>,
Jonathan Cameron <jic23@...nel.org>, David Lechner <dlechner@...libre.com>,
Nuno Sá <nuno.sa@...log.com>,
Andy Shevchenko <andy@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
<conor+dt@...nel.org>, Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>, David Heidelberg <david@...t.cz>
Cc: linux-iio@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 4/4] iio: proximity: vl53l0x-i2c: Use raw I2C access and
read full device ID
On 19/01/2026 18:19, Petr Hodina via B4 Relay wrote:
> diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl53l0x-i2c.c
> index 6901ce7dd835..a2de4cc16a43 100644
> --- a/drivers/iio/proximity/vl53l0x-i2c.c
> +++ b/drivers/iio/proximity/vl53l0x-i2c.c
> @@ -320,11 +320,35 @@ static const struct iio_trigger_ops vl53l0x_trigger_ops = {
> .validate_device = iio_trigger_validate_own_device,
> };
>
> +
Do not introduce stray blank lines.
> +static int vl53l0x_read_word(struct i2c_client *client, u8 reg, u16 *val)
> +{
> + int ret;
> + u8 buf[2];
> +
> + ret = i2c_master_send(client, ®, 1);
> + if (ret < 0)
> + return ret;
> + if (ret != 1)
> + return -EIO;
> +
> + ret = i2c_master_recv(client, buf, 2);
> + if (ret < 0)
> + return ret;
> + if (ret != 2)
> + return -EIO;
> +
> + *val = (buf[0] << 8) | buf[1];
> +
> + return 0;
> +}
> +
> static int vl53l0x_probe(struct i2c_client *client)
> {
> struct vl53l0x_data *data;
> struct iio_dev *indio_dev;
> int ret;
> + u16 model, rev;
>
> indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
> if (!indio_dev)
> @@ -339,13 +363,6 @@ static int vl53l0x_probe(struct i2c_client *client)
> I2C_FUNC_SMBUS_BYTE_DATA))
> return -EOPNOTSUPP;
>
> - ret = i2c_smbus_read_byte_data(data->client, VL_REG_IDENTIFICATION_MODEL_ID);
> - if (ret < 0)
> - return -EINVAL;
> -
> - if (ret != VL53L0X_MODEL_ID_VAL)
> - dev_info(&client->dev, "Unknown model id: 0x%x", ret);
> -
> data->vdd_supply = devm_regulator_get(&client->dev, "vdd");
> if (IS_ERR(data->vdd_supply))
> return dev_err_probe(&client->dev, PTR_ERR(data->vdd_supply),
> @@ -372,6 +389,20 @@ static int vl53l0x_probe(struct i2c_client *client)
> if (ret)
> return ret;
>
> + ret = vl53l0x_read_word(client, 0xC0, &model);
> + if (ret)
> + return dev_err_probe(&client->dev, ret, "Failed to read model ID\n");
> +
> + ret = vl53l0x_read_word(client, 0xC2, &rev);
> + if (ret)
> + return dev_err_probe(&client->dev, ret, "Failed to read revision ID\n");
> +
> + dev_info(&client->dev, "VL53L0X model=0x%04x rev=0x%04x\n", model, rev);
dev_dbg
This does not look like useful printk message. Drivers should be silent
on success:
https://elixir.bootlin.com/linux/v6.15-rc7/source/Documentation/process/coding-style.rst#L913
https://elixir.bootlin.com/linux/v6.15-rc7/source/Documentation/process/debugging/driver_development_debugging_guide.rst#L79
Best regards,
Krzysztof
Powered by blists - more mailing lists