From nobody Mon Feb 9 02:55:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60FD0324712; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; cv=none; b=iLt5BC+/yxsig3TTW2fwgZUKxwdBZ3UloYvnEseC2b0X/Db3XArHQd0uOcxbpyTPgChHWnLA8KT+m65wCqUT0t1G3NPRlV8h8PDOxFO9K5zhmlPUFXLId2onUahztbZfmViv9l093eRRopclkD2y8F0C6Fb18HIh1mYkBGVZ+xg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; c=relaxed/simple; bh=L5Oz3azqPZDLg50OLnMaEbRamF2YpBEBXH94OvTmD1g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KyxKy2OGcxA8+IUN2LNPZXW6A5nj0ZiEhEsYUJC8FoMoVJYdp/IJOa6hamW7FKNjot+MhfuLyCc6UOyOJx+eGTMM2AmNPG+YqWjBSy+ZPprRl5uqd4wSU2ae65V6yEKiF+B5IPXoyjpdqqS+8W50XdjN12sEotyUvrf7cXZd3DQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JM71DKmT; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JM71DKmT" Received: by smtp.kernel.org (Postfix) with ESMTPS id EF4A6C19424; Mon, 19 Jan 2026 17:20:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768843209; bh=L5Oz3azqPZDLg50OLnMaEbRamF2YpBEBXH94OvTmD1g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=JM71DKmTHLxy0aB6B8XN5G63d7Bp0znpY2dnOfyvf8YzdAkc+iEK/cnP3RuApJUyC yloX31ZeSVT49vHau7tknodB9q3nb4cuGBIOixeX9K5ZgRJsLnGP3D+mfeMNr0vAEB 7iux7623Ldcd/b/XPObfKJhcBcrDCWD8G4CU+YbTbHPkHVUkPtonwuiGR0Iu79X+G2 2GlS4btcNA8z0885GX8ou8KlI5gcWp/0qDYP4Y9afSBzT1dDVMprmHH1GmDw6+US2j BJQztSHJtNm+wv/qG1kVMlzkA7e1HjoO2B8xEqz6JG8FYuGmOWLzVLov+r+gKTHoBx DVukxGNK0b1zw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E8499D29C32; Mon, 19 Jan 2026 17:20:08 +0000 (UTC) From: Petr Hodina via B4 Relay Date: Mon, 19 Jan 2026 18:19:55 +0100 Subject: [PATCH 1/4] iio: proximity: vl53l0x-i2c: Add optional vddio regulator Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260119-vl53l0x-v1-1-cf71715a1353@protonmail.com> References: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> In-Reply-To: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> To: Song Qiang , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , David Heidelberg Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petr Hodina X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768843207; l=816; i=petr.hodina@protonmail.com; s=20260107; h=from:subject:message-id; bh=BV4POcOIZq8QUHOdmdM1SwxBCDON6elezUBUerTNxcg=; b=cPVYUMmL1kFKjDAF78n8ou5j2xqWoELiWi5TaQSfe2CUAq3cwCY9ROgWsOIyJv4dGbNP3qK9n OaZDney50bkDwL21eO/vxCVlTJo0+ID6CgM28xfqQFO0po7uxBTJjZk X-Developer-Key: i=petr.hodina@protonmail.com; a=ed25519; pk=3QaVc6AaAu1IsyyH86+LIOOFhD7kCws8Xhe+wwyE7Bg= X-Endpoint-Received: by B4 Relay for petr.hodina@protonmail.com/20260107 with auth_id=594 X-Original-From: Petr Hodina Reply-To: petr.hodina@protonmail.com From: Petr Hodina The VL53L0X can be powered using separate core (VDD) and I/O (VDDIO) supplies. Add support for an optional vio regulator and enable/disable it during power on/off when present. Signed-off-by: Petr Hodina --- Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yam= l b/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml index 322befc41de6..f7e55d427fe4 100644 --- a/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml +++ b/Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml @@ -24,6 +24,8 @@ properties: =20 vdd-supply: true =20 + vio-supply: true + required: - compatible - reg --=20 2.52.0 From nobody Mon Feb 9 02:55:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60E1E31A7E1; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; cv=none; b=l5tZlSGpmvDdVRTj32NZrlvMoHvRNvRT9fa5VDFk8wf4x4hsywCM64FTcjBy59+SEmKEL7AfoK8czXxsDQOwzPyerGf0/s3XaMufa4LaSmGviOahyD1VA6pH8qLX+b2CvN6XXPW1l/h5l9kFwnHdI+shmrAzGmEiOaeT2s/t4Iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; c=relaxed/simple; bh=rG76RvhBOVOgf0yOJgNfSS9lji4ANp3koFBz9AaFvxI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hSXmv6/scfIM0zZ5ySN4N6LNIpszzPzUo9Cd315oFj6Je6RlMjsdCyymRzNiXjLZQWuEkI25ZVBQTlpUKTk/SL+AEaDJ/bDPGlplvEIXeyDQ//V+NVAqFOH1UPgTNrEfcJl0zLB0hvIpDp+TccDKDroKcPuKnPfhxVPkO8v1pa4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZGxb4rOb; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZGxb4rOb" Received: by smtp.kernel.org (Postfix) with ESMTPS id 0BA61C19422; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768843209; bh=rG76RvhBOVOgf0yOJgNfSS9lji4ANp3koFBz9AaFvxI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZGxb4rOb5wJd2vmoaafqZ89eWXyXiOcnZayfQRckdVLM94roW9FL6aqM9lg5zhFe5 aO1RyzXVkDmoSXLvQ5wwqjM2gQRJuPpRyiREPsElAWOBq74J6J19WL5wQbJfGrxbIR ODZJH/CwT0HGA5llgthmmwwsvJxpJJKyLr7f1lXAy2YKzK8uaPP0QJi+TdllwBgFfJ wsl0eUkbxpfJXMBYyh2HBKb5zUvd4cbAt8w/Ks7kIDIhSes31EpFwpbeAc6uClqqyi ZyYOgJnjJ6Q6i02CHvHC3PcZ4n15ihijWWzDdt8SL/4F82DmvxDzF2eebdyYvNM7kj DXdwBU+WeXV1w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04239D29C50; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) From: Petr Hodina via B4 Relay Date: Mon, 19 Jan 2026 18:19:56 +0100 Subject: [PATCH 2/4] iio: proximity: vl53l0x-i2c: Add optional vddio supply Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260119-vl53l0x-v1-2-cf71715a1353@protonmail.com> References: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> In-Reply-To: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> To: Song Qiang , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , David Heidelberg Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petr Hodina X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768843207; l=2141; i=petr.hodina@protonmail.com; s=20260107; h=from:subject:message-id; bh=Z/oDKMbpkux1E6FCJwGZb5Lx2YWZ4LyLjJUa6LfMlOM=; b=SFNOISE7IEkxlXLbDRMMG0CEL2Csv/oRflzEaswxviZT9PR6ZHYPThjG0zTC02ny1cRCHVCRj ofxk87oieUhA1PsZymKAT3rmFmIJkE0I1MFH9TQGEU0bYy21az+XWUq X-Developer-Key: i=petr.hodina@protonmail.com; a=ed25519; pk=3QaVc6AaAu1IsyyH86+LIOOFhD7kCws8Xhe+wwyE7Bg= X-Endpoint-Received: by B4 Relay for petr.hodina@protonmail.com/20260107 with auth_id=594 X-Original-From: Petr Hodina Reply-To: petr.hodina@protonmail.com From: Petr Hodina The VL53L0X can be powered using separate core (VDD) and I/O (VDDIO) supplies. Add support for an optional vio regulator and enable/disable it during power on/off when present. Update the device tree binding to document the new optional supply. Signed-off-by: Petr Hodina --- drivers/iio/proximity/vl53l0x-i2c.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl= 53l0x-i2c.c index ad3e46d47fa8..7bfab396377a 100644 --- a/drivers/iio/proximity/vl53l0x-i2c.c +++ b/drivers/iio/proximity/vl53l0x-i2c.c @@ -55,6 +55,7 @@ struct vl53l0x_data { struct i2c_client *client; struct completion completion; struct regulator *vdd_supply; + struct regulator *vio_supply; struct gpio_desc *reset_gpio; struct iio_trigger *trig; }; @@ -256,6 +257,8 @@ static void vl53l0x_power_off(void *_data) gpiod_set_value_cansleep(data->reset_gpio, 1); =20 regulator_disable(data->vdd_supply); + if (data->vio_supply) + regulator_disable(data->vio_supply); } =20 static int vl53l0x_power_on(struct vl53l0x_data *data) @@ -266,6 +269,12 @@ static int vl53l0x_power_on(struct vl53l0x_data *data) if (ret) return ret; =20 + if (data->vio_supply) { + ret =3D regulator_enable(data->vio_supply); + if (ret) + return ret; + } + gpiod_set_value_cansleep(data->reset_gpio, 0); =20 usleep_range(3200, 5000); @@ -338,6 +347,13 @@ static int vl53l0x_probe(struct i2c_client *client) return dev_err_probe(&client->dev, PTR_ERR(data->vdd_supply), "Unable to get VDD regulator\n"); =20 + data->vio_supply =3D devm_regulator_get_optional(&client->dev, "vio"); + if (PTR_ERR(data->vio_supply) =3D=3D -ENODEV) + data->vio_supply =3D NULL; + else if (IS_ERR(data->vio_supply)) + return dev_err_probe(&client->dev, PTR_ERR(data->vio_supply), + "Unable to get VDDIO regulator\n"); + data->reset_gpio =3D devm_gpiod_get_optional(&client->dev, "reset", GPIOD= _OUT_HIGH); if (IS_ERR(data->reset_gpio)) return dev_err_probe(&client->dev, PTR_ERR(data->reset_gpio), --=20 2.52.0 From nobody Mon Feb 9 02:55:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60F3D322557; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; cv=none; b=LDE91oE5fmiKSkxuViT9w/xwJbAe6Lf9cvkM82noSMZQVJ6iOqmz4n8m7lNhnoFUNu/goAIraT4bkf2RwhoT4XnujTYisy6MghBAY7xTRHGxj/vEzbc9wfADfeSn5dwVDAHcrj/TkQvK118/9GSyi59PZJZAuKvBaWiD7dSQKfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; c=relaxed/simple; bh=atHny99ai5Iea0DAO2NhsbjbhqLOHcKTs4WEAfh9+2A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qK8EN8yKZoFVfB69MJiquCO3NuPUcBcHD5qVtHGW1K9Uu4gjeCzh2koZg+XszN6Z5iCct0WhevYC5fetp8siyF6wJdoKlbtPNlMR+rT3HZwgnqfDu8HUiGTxcKU36Sbwrumk7Q99e2Os3wl8PLVPNWdKTO/jhqjuafkwGREc3rA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=phD/YRh1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="phD/YRh1" Received: by smtp.kernel.org (Postfix) with ESMTPS id 1A134C2BCB1; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768843209; bh=atHny99ai5Iea0DAO2NhsbjbhqLOHcKTs4WEAfh9+2A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=phD/YRh1havVMg0Z9dNWpL1mnmm4cN9Edu7WXfw4+WBDf6n0/UxIYMHXAVQFQbKqP d3r42rih94/QSElOARiritSGT/+0hIyaa18ihhKs2Lup+nqbXeuXo5OvDPwQU/GIXB RyPntQMYQBGm7WGQSa0+piOauB48Ohz7i+uUQeBUjQV+YVMwoxpnONOLm4dRAsilDT hb79kHmYn/5UYMS81i9bzgowZcq5QwbXnbwxvGr3QKwYdiwjEeSJ7DfrsJJxl2Mejs LGVEcC7w9nKP91snWA4yO4CcsZL1lCxdzLQTcJCeB5+K55I9Ew5ocYabw8vPrVjeNZ 1WlL2oz2WlEnw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 12CA9D29C52; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) From: Petr Hodina via B4 Relay Date: Mon, 19 Jan 2026 18:19:57 +0100 Subject: [PATCH 3/4] iio: proximity: vl53l0x-i2c: Fix reset sequence Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260119-vl53l0x-v1-3-cf71715a1353@protonmail.com> References: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> In-Reply-To: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> To: Song Qiang , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , David Heidelberg Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petr Hodina X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768843207; l=1425; i=petr.hodina@protonmail.com; s=20260107; h=from:subject:message-id; bh=gSEF9OiTVlziFUY+j6AnvS9EbsjgiEBrPmz9odaovLo=; b=tRYucSdFhwTxfqOarD4F45oBWBG3pFwZnKUv7ccyqlEqk3wJpxHk3ou5uHoOzkdxscsLl7C7/ NH+jR4TUbziBbJLmB2DsOJ4Ca+GSu4/XoKLh4MJ/WlB+xdszuZRB1WT X-Developer-Key: i=petr.hodina@protonmail.com; a=ed25519; pk=3QaVc6AaAu1IsyyH86+LIOOFhD7kCws8Xhe+wwyE7Bg= X-Endpoint-Received: by B4 Relay for petr.hodina@protonmail.com/20260107 with auth_id=594 X-Original-From: Petr Hodina Reply-To: petr.hodina@protonmail.com From: Petr Hodina Fix the reset GPIO handling and power-up timing to better match the VL53L0X reset requirements. Signed-off-by: Petr Hodina --- drivers/iio/proximity/vl53l0x-i2c.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl= 53l0x-i2c.c index 7bfab396377a..6901ce7dd835 100644 --- a/drivers/iio/proximity/vl53l0x-i2c.c +++ b/drivers/iio/proximity/vl53l0x-i2c.c @@ -275,9 +275,13 @@ static int vl53l0x_power_on(struct vl53l0x_data *data) return ret; } =20 - gpiod_set_value_cansleep(data->reset_gpio, 0); - - usleep_range(3200, 5000); + usleep_range(5000, 6000); + if (data->reset_gpio) { + gpiod_set_value_cansleep(data->reset_gpio, 1); + usleep_range(5000, 6000); + gpiod_set_value_cansleep(data->reset_gpio, 0); + usleep_range(5000, 6000); + } =20 return 0; } @@ -354,7 +358,7 @@ static int vl53l0x_probe(struct i2c_client *client) return dev_err_probe(&client->dev, PTR_ERR(data->vio_supply), "Unable to get VDDIO regulator\n"); =20 - data->reset_gpio =3D devm_gpiod_get_optional(&client->dev, "reset", GPIOD= _OUT_HIGH); + data->reset_gpio =3D devm_gpiod_get_optional(&client->dev, "reset", GPIOD= _OUT_LOW); if (IS_ERR(data->reset_gpio)) return dev_err_probe(&client->dev, PTR_ERR(data->reset_gpio), "Cannot get reset GPIO\n"); --=20 2.52.0 From nobody Mon Feb 9 02:55:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60EA3320CCF; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; cv=none; b=cCuxKd8nb1apLo2Um0CmxU7tx8UEnJhcAZwIcyfqylWf7k+zFDqfrhxG14kNQI7pPflnusbgRB6UhtN0OeFUodzxIfsnq7rRLQ1FtkSaUoZsWJxtJreNTPPMHDq1X3SbDMT1WTBH1LpIQ5tFNsPh5yfzvIkF7tmOlgKgif2/Lzs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768843209; c=relaxed/simple; bh=qWbkmFUVqb1jkcEEsBWUt6AU2jPXhmoXkQv4QUYC574=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZvMoZw3CweRBYuBuBtmey1d17Kfg+YqrqI+SCRaZTXFCfOEerXGv3xVqRfTzYGFUCYXrbHzeSAK4eNMDTnxSfdDXsnokRXe7y9hfDmaskNdn1a1VRMxKZfVUlgPoIp55ADdTuuD0u+/ao/6Toz14+C/Lr304UJEgO2vdfuMsZSE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jVMfdHML; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jVMfdHML" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2B6DAC4AF15; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768843209; bh=qWbkmFUVqb1jkcEEsBWUt6AU2jPXhmoXkQv4QUYC574=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jVMfdHMLiE2ZCvuCYGmwRYYWFFQNxE+kyPIL4Ilf7YelCJjbLiB9ewZPmxFPQ792p MErTgucT2XB20upP4Qr1NJV6vaGr/6GP5wtvcAR6cEO2Cz98MVTrkgnoo4jC3XiXVv 7xI0mUT4sHMtI6mOgH7wfki7Q3ku+0Mh7NB9sEZ+uuh9mJVOvtPSrXYmFnw6oAl1/b PTHSsyVQcwWqMnkDL6VSIMoeKkYNfYWhqaip1nGevFazxFDAUUZqZGUTD2p5gK0D3R CdWiYOPchYypO6D9I0fCBzbQC9YjabzO6GDuoQOy8XpgJrmTfK0zspPazbahJQqMJ5 /QkilVxFbxDgw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21996D29C4F; Mon, 19 Jan 2026 17:20:09 +0000 (UTC) From: Petr Hodina via B4 Relay Date: Mon, 19 Jan 2026 18:19:58 +0100 Subject: [PATCH 4/4] iio: proximity: vl53l0x-i2c: Use raw I2C access and read full device ID Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260119-vl53l0x-v1-4-cf71715a1353@protonmail.com> References: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> In-Reply-To: <20260119-vl53l0x-v1-0-cf71715a1353@protonmail.com> To: Song Qiang , Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , David Heidelberg Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petr Hodina X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768843207; l=2915; i=petr.hodina@protonmail.com; s=20260107; h=from:subject:message-id; bh=d+hR0F/bDeIjVeoY7OePEyZl2RADxLrlf6OYgdsANok=; b=0kzauao6M0YQ7pPlLk4mUBIlnjb12ECy1EXuGr6fNc/b4+2imVy+PWaKfasHv0iuQbXkvcSZV JJ2fmLulcfoB37cVPj1OtwNKTlsMdbV31tGmdYZECrPZbAn+HluMrJg X-Developer-Key: i=petr.hodina@protonmail.com; a=ed25519; pk=3QaVc6AaAu1IsyyH86+LIOOFhD7kCws8Xhe+wwyE7Bg= X-Endpoint-Received: by B4 Relay for petr.hodina@protonmail.com/20260107 with auth_id=594 X-Original-From: Petr Hodina Reply-To: petr.hodina@protonmail.com From: Petr Hodina Replace SMBus byte reads with raw I2C transfers when reading the device identification registers. The VL53L0X exposes its model and revision as 16-bit registers, which are more accurately accessed using standard I2C send/receive operations. This also avoids depending on SMBus byte data support, which is not guaranteed on all I2C adapters. Read and log both model and revision IDs, and validate the model ID during probe to ensure the expected device is present. Signed-off-by: Petr Hodina --- drivers/iio/proximity/vl53l0x-i2c.c | 45 +++++++++++++++++++++++++++++++--= ---- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/drivers/iio/proximity/vl53l0x-i2c.c b/drivers/iio/proximity/vl= 53l0x-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_o= ps =3D { .validate_device =3D iio_trigger_validate_own_device, }; =20 + +static int vl53l0x_read_word(struct i2c_client *client, u8 reg, u16 *val) +{ + int ret; + u8 buf[2]; + + ret =3D i2c_master_send(client, ®, 1); + if (ret < 0) + return ret; + if (ret !=3D 1) + return -EIO; + + ret =3D i2c_master_recv(client, buf, 2); + if (ret < 0) + return ret; + if (ret !=3D 2) + return -EIO; + + *val =3D (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; =20 indio_dev =3D 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; =20 - ret =3D i2c_smbus_read_byte_data(data->client, VL_REG_IDENTIFICATION_MODE= L_ID); - if (ret < 0) - return -EINVAL; - - if (ret !=3D VL53L0X_MODEL_ID_VAL) - dev_info(&client->dev, "Unknown model id: 0x%x", ret); - data->vdd_supply =3D 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; =20 + ret =3D vl53l0x_read_word(client, 0xC0, &model); + if (ret) + return dev_err_probe(&client->dev, ret, "Failed to read model ID\n"); + + ret =3D 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=3D0x%04x rev=3D0x%04x\n", model, re= v); + + if ((model >> 8) !=3D VL53L0X_MODEL_ID_VAL) + return dev_err_probe(&client->dev, -ENODEV, + "Unexpected model ID: 0x%04x\n", model); + indio_dev->name =3D "vl53l0x"; indio_dev->info =3D &vl53l0x_info; indio_dev->channels =3D vl53l0x_channels; --=20 2.52.0