From nobody Mon Feb 9 01:01:04 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 C753F3A35AC; Tue, 20 Jan 2026 20:36:05 +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=1768941365; cv=none; b=BrOkg3mmkKxs/Z1PNlVKfDwR6wUDFT4laMnJN1qcM8g5Mg0a3KUZRq/b8ncUNdjyh1wVUpVlOD18+aX6FfdvZdX74LTjF96kmJbnE9S25P+k3ARqdEY7KB+e53X/M0HfmI6I8sae4NnRwI6gG0bcTkLcc9LCdpaLEDN3AFf2G18= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768941365; c=relaxed/simple; bh=5ZmR2GfzffFLBtHed5hb5/Xe8Pkk/TMf/pAQ/QvfE2s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iWoueM3xirSMTH73Ym9M7aLB65+GVgU2slLXyyK2kAOzeMPYth5z3BLQr4bk4ucqu63twbxeXhwpnlB+JGQvedgPXuml1pRhiiK1fehJfIgskPxb8q23JNTeHHlKXiwqMHWTeWbQPGlPVyhqSeAzDMeB7H/GF7ydMq9X+Sa5Om0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KWtXmlR/; 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="KWtXmlR/" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7FF1AC19422; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768941365; bh=5ZmR2GfzffFLBtHed5hb5/Xe8Pkk/TMf/pAQ/QvfE2s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=KWtXmlR/Gj/Svw18Tt3grSD5lqWf4kQItXQWIt9s9Z9M8JAsnJu71LWZXO+hvICZe svjlaxYVf+dCROQrkYysgNM1lTk0YZ85ZUzQUiRR8lLHrnKfZtoIT8G0qKujJPy8IQ dlPQ8YLRRr07NKbqwN6NLvmWTlN6EX1zWQ3bvbwOOkkd9gMnCbFw6ykIbwWd12hU+H hKPlh9RNbsZ8IGIsCQ4STn+RHAgYXq+6MHT/txZjRUaTSjao8YdqgcKwegSn6HiX9S hAZJjZYzEjbQDDUu9bLqDeNbQIg6mFtN8gIObiqjUPMN0H2mKGKXgGIelBhKZJn0UJ hDWcWcXt2Q2Fw== 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 6F776D2629F; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) From: Shrikant Raskar via B4 Relay Date: Wed, 21 Jan 2026 02:05:41 +0530 Subject: [PATCH v6 1/5] iio: proximity: rfd77402: Reorder header includes 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: <20260121-b4-rfd77402_v5-v6-1-5b944d0605dd@gmail.com> References: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> In-Reply-To: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: skhan@linuxfoundation.org, david.hunter.linux@gmail.com, raskar.shree97@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768941363; l=731; i=raskar.shree97@gmail.com; s=20260101; h=from:subject:message-id; bh=+lDkn76SMhA3dkH1gC8XiqHtbB8QLypbDZIHSMwSfMo=; b=/2dpmXYCt5Ks+vFNDZQ/RlkvexSClD5ouFTK3Pz9c0ML2KH62JnlJM/HNB4UvZwUMtiH0OF/Z +yZYo09NikmB7+T4LvIvQvmFgjyyVQJp+QrogNVRMP+Rf9W1de7LBGW X-Developer-Key: i=raskar.shree97@gmail.com; a=ed25519; pk=4m2wXDvY0vlXefvRRzawNcNAif88Cy4XvbLkU6iMG/Y= X-Endpoint-Received: by B4 Relay for raskar.shree97@gmail.com/20260101 with auth_id=589 X-Original-From: Shrikant Raskar Reply-To: raskar.shree97@gmail.com From: Shrikant Raskar Reorder header includes to follow kernel include ordering conventions. Signed-off-by: Shrikant Raskar Reviewed-by: Andy Shevchenko --- drivers/iio/proximity/rfd77402.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iio/proximity/rfd77402.c b/drivers/iio/proximity/rfd77= 402.c index aff60a3c1a6f..69cc1505b964 100644 --- a/drivers/iio/proximity/rfd77402.c +++ b/drivers/iio/proximity/rfd77402.c @@ -10,9 +10,9 @@ * https://media.digikey.com/pdf/Data%20Sheets/RF%20Digital%20PDFs/RFD7740= 2.pdf */ =20 -#include -#include #include +#include +#include =20 #include =20 --=20 2.43.0 From nobody Mon Feb 9 01:01:04 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 3CADD3B52E8; Tue, 20 Jan 2026 20:36:05 +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=1768941366; cv=none; b=FaRjN6Udcf+fcCr/vHupxdIrm6AfavyaN2ywPXGOBTpAPtDDhkqxb1RMfWSuIf1Jd+ba+EhVEayB0JhMmTUQdDKonBu7c1o3n+Fhx+VuKrIdZIRF3F89X1EDxUiCxkEZ8xBFmh5wVW0F8fEob4AhUH85gJawfzOinN3CN76ngp0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768941366; c=relaxed/simple; bh=/b0Q91FnP5UMheFU0YI2D/+71cVpc+B6q/mVGqhhD4c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nxVpHLNba+78eDaRlRoI75pWcPcsXvW1xH3cvEFvWER64549zx2JtSOxVWhwQ1e3udjRrmQj7DGHWq0Ksdl4RGSFV67Lnm2hqJR81jfPmmT50jmKCmAuKkGoZWib5zvowbJJXUPvn2LcRLF/m1kHR+75m94HWzz/pUwGLqP0hEY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FOQ6N62Z; 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="FOQ6N62Z" Received: by smtp.kernel.org (Postfix) with ESMTPS id 8B8E6C19421; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768941365; bh=/b0Q91FnP5UMheFU0YI2D/+71cVpc+B6q/mVGqhhD4c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=FOQ6N62ZNpy85VmCZk31desO1F0Vj5PJpWV9uzpVu75uWrS3s/iJLogoXDE1NOHbL j6boPeBpo4nvhs8KhVL67tyL7fuAMdoqTMRtxCPU9X78X/mNRrnpjrYGWjroKj4p5c SEpTCriSZsim6YLN2niGyVEyXd9ajl0PdrRvuWjFTJr4EuFbu6TUV4n1EMl09qPR3O NLi+zitTzARLGh7yAwxTj3kOoPaZ+ZVfAHcxPNfVaKT/CYqhXGgloZ2rD/1u4Np68y jTUEvEX0qSwLQB4rpmIhMK+f1uyOtcEt544xhsRaB/DnTVGA7sz3/Raa5CF/9X/PZG nRCBAY26SaxCw== 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 7E9D1D262A2; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) From: Shrikant Raskar via B4 Relay Date: Wed, 21 Jan 2026 02:05:42 +0530 Subject: [PATCH v6 2/5] iio: proximity: rfd77402: Use kernel helper for result polling 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: <20260121-b4-rfd77402_v5-v6-2-5b944d0605dd@gmail.com> References: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> In-Reply-To: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: skhan@linuxfoundation.org, david.hunter.linux@gmail.com, raskar.shree97@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768941363; l=2437; i=raskar.shree97@gmail.com; s=20260101; h=from:subject:message-id; bh=4u2p7u2sPM3ykf44S/Ovsl7IQD1KSPRmN8mf85upMmM=; b=53ab3EfsxHhCijHrEzTVEg3uKP9tyeLSOQaUuHCKCptcrU8GtyklVFuyCg/aNe3Y5WU1tPMRH aWjgHEGGrO5ADuKzkuc++SKo54qLyJo1frXwVCF37INIBKx4L8cVKmi X-Developer-Key: i=raskar.shree97@gmail.com; a=ed25519; pk=4m2wXDvY0vlXefvRRzawNcNAif88Cy4XvbLkU6iMG/Y= X-Endpoint-Received: by B4 Relay for raskar.shree97@gmail.com/20260101 with auth_id=589 X-Original-From: Shrikant Raskar Reply-To: raskar.shree97@gmail.com From: Shrikant Raskar Replace the manually written polling loop with read_poll_timeout(), the kernel's standard helper for waiting on hardware status. Move the polling logic into a dedicated helper function, as it will be reused by future updates. This makes the code easier to read and avoids repeating the same polling code in the driver. Signed-off-by: Shrikant Raskar --- drivers/iio/proximity/rfd77402.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/iio/proximity/rfd77402.c b/drivers/iio/proximity/rfd77= 402.c index 69cc1505b964..716c9330b14e 100644 --- a/drivers/iio/proximity/rfd77402.c +++ b/drivers/iio/proximity/rfd77402.c @@ -12,6 +12,7 @@ =20 #include #include +#include #include =20 #include @@ -110,10 +111,23 @@ static int rfd77402_set_state(struct i2c_client *clie= nt, u8 state, u16 check) return 0; } =20 -static int rfd77402_measure(struct i2c_client *client) +static int rfd77402_wait_for_result(struct rfd77402_data *data) { + struct i2c_client *client =3D data->client; + int ret; + + return read_poll_timeout(i2c_smbus_read_byte_data, ret, + ret & RFD77402_ICSR_RESULT, + 10 * USEC_PER_MSEC, + 10 * 10 * USEC_PER_MSEC, + false, + client, RFD77402_ICSR); +} + +static int rfd77402_measure(struct rfd77402_data *data) +{ + struct i2c_client *client =3D data->client; int ret; - int tries =3D 10; =20 ret =3D rfd77402_set_state(client, RFD77402_CMD_MCPU_ON, RFD77402_STATUS_MCPU_ON); @@ -126,19 +140,9 @@ static int rfd77402_measure(struct i2c_client *client) if (ret < 0) goto err; =20 - while (tries-- > 0) { - ret =3D i2c_smbus_read_byte_data(client, RFD77402_ICSR); - if (ret < 0) - goto err; - if (ret & RFD77402_ICSR_RESULT) - break; - msleep(20); - } - - if (tries < 0) { - ret =3D -ETIMEDOUT; + ret =3D rfd77402_wait_for_result(data); + if (ret < 0) goto err; - } =20 ret =3D i2c_smbus_read_word_data(client, RFD77402_RESULT_R); if (ret < 0) @@ -168,7 +172,7 @@ static int rfd77402_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: mutex_lock(&data->lock); - ret =3D rfd77402_measure(data->client); + ret =3D rfd77402_measure(data); mutex_unlock(&data->lock); if (ret < 0) return ret; --=20 2.43.0 From nobody Mon Feb 9 01:01:04 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 3ED053B52EA; Tue, 20 Jan 2026 20:36:05 +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=1768941366; cv=none; b=meLXpUi0ZCzlLOTIDlcrI5w5NR8l377iGnWW2OzyIxO2aP6wPYQTemNz4r4u5YQGjMbxKMn0edordRDTK8k4CO7hQF+50XgqUfaHzFJ3BB1wkfjJE6MrNKemWWiUGacFpY4VvK/rTihQHuWBJQjpqX6C0QzvLY5ocQ/z0T3PsfE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768941366; c=relaxed/simple; bh=UbUmzcvsKu9V0KRgT6cWJVKpkyxRu8aIhwGqdX6yOF0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XCyZVS4GEl729CL99UREgS/b176EAeEdD6EcL1sW9Wt0Vh/GwQWrLymn6v09d5sB/SazIF6fv5TXZODJ5t5qVuIeGs4vx3E+mmyrsrhqnQLJYLHhZyhbGAoeRmLvBtAxUMan2B2zODPVWEpR6UfYzKpYgp/3Pq6CaNBwkeV5dGA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jG4hujG+; 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="jG4hujG+" Received: by smtp.kernel.org (Postfix) with ESMTPS id 96032C2BC86; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768941365; bh=UbUmzcvsKu9V0KRgT6cWJVKpkyxRu8aIhwGqdX6yOF0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jG4hujG+sbw3MHzhkk81xNTFZKIjPdEEEsVhrXdC5OCMFb+31eLItxa97HmVyQzkL 4nO+UsbpQxV5Z+uxHCnMx8xzFUXb6Uv2GDVGW/XEww9JjaAQ1lLeJZU2CfrmBlLUW4 EDCSPR4v9NGrFG6LrN9aYN+EpzuHYIUgjiMMqXRGYjqmU/T0lQKoxQgGlWyFsMop6d MgiL9BtIPmTLBg8b9IOOsbFQxNBjtax/rjnxLbiqmH+qwEPYCDKjE1xQ+OsOb7zJbb 1ohcoz8GiqCvrcn1TbkEee5l6JuGJPvF3BrIxQ+DKBQfJNLr9vhIwY6mcoZoRmetnh GF8BGu3pfh0vQ== 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 8CA34D2629E; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) From: Shrikant Raskar via B4 Relay Date: Wed, 21 Jan 2026 02:05:43 +0530 Subject: [PATCH v6 3/5] iio: proximity: rfd77402: Use devm-managed mutex initialization 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: <20260121-b4-rfd77402_v5-v6-3-5b944d0605dd@gmail.com> References: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> In-Reply-To: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: skhan@linuxfoundation.org, david.hunter.linux@gmail.com, raskar.shree97@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768941363; l=818; i=raskar.shree97@gmail.com; s=20260101; h=from:subject:message-id; bh=Jbw2jRYhJCQKsDCCTnrLgTMuFbvpolChjoZDjy+nAZg=; b=1+1jcJY9BWvd4UKejZ3wtDiiEG0TDJdi0FUlMjglDA8UXCNZFS0KxMOqOFZc6zB/ekmi0/MjU vAYl1sSW+40D7GI3x1I1txBfGNzmOHdmo052pgimQtGBUp/H6IV1nTu X-Developer-Key: i=raskar.shree97@gmail.com; a=ed25519; pk=4m2wXDvY0vlXefvRRzawNcNAif88Cy4XvbLkU6iMG/Y= X-Endpoint-Received: by B4 Relay for raskar.shree97@gmail.com/20260101 with auth_id=589 X-Original-From: Shrikant Raskar Reply-To: raskar.shree97@gmail.com From: Shrikant Raskar Use devm_mutex_init() to tie the mutex lifetime to the device and simplify resource lifetime management. Signed-off-by: Shrikant Raskar Reviewed-by: Andy Shevchenko --- drivers/iio/proximity/rfd77402.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/iio/proximity/rfd77402.c b/drivers/iio/proximity/rfd77= 402.c index 716c9330b14e..fce85f783ab4 100644 --- a/drivers/iio/proximity/rfd77402.c +++ b/drivers/iio/proximity/rfd77402.c @@ -279,7 +279,10 @@ static int rfd77402_probe(struct i2c_client *client) =20 data =3D iio_priv(indio_dev); data->client =3D client; - mutex_init(&data->lock); + + ret =3D devm_mutex_init(&client->dev, &data->lock); + if (ret) + return ret; =20 indio_dev->info =3D &rfd77402_info; indio_dev->channels =3D rfd77402_channels; --=20 2.43.0 From nobody Mon Feb 9 01:01:04 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 40C693B52EF; Tue, 20 Jan 2026 20:36:05 +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=1768941366; cv=none; b=oaw4Rhk3pUIoXZYvI8scmYOkLsKo0jPom2sw4qK+EOWyRPpXcy2EdERNCc1Dt5iUde4z57F45WDhxju/K0Zj1bL919jKWOMDAc8g+Y3dduJqZ/V+nrtgxbMU/Q1K6REisghx7ag8G+lGIdyF53rcDxBE6M09EZwjOjM2WokIIy0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768941366; c=relaxed/simple; bh=Uxql/rqWAgjr7g9LNR1+R/8omv+xrkH9wRXMusg9PWY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j1PgHcg4rju/V4fzZfXroUxZ8vXtQwY5w7KMHlOyIlVwifp9z940c0f6AKkjxapAJoKzlnOFEWhOoZJIFdDgBJLT7/qCuLxVAvz/y+IXJG28KxBiG0/rz3QWDyMPCo/mSmrSk+LLKVqwXtSvVZ/Em8hTFBoSLk9/Avp1r37+KL8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZU4h46dX; 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="ZU4h46dX" Received: by smtp.kernel.org (Postfix) with ESMTPS id A4FB3C2BC9E; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768941365; bh=Uxql/rqWAgjr7g9LNR1+R/8omv+xrkH9wRXMusg9PWY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZU4h46dX6V0NpmibR/NPqVy2eNdTnRh6uUvzNtAQaOdH4lBcRS9sMrqOMK7lzmYxb 6xRT4A6mn/ARvWe9zOrsAo2o9KgGJNFgLeIknrIjB+5R0jk+ox9ltAccpAe0NfKm8C x1b1/PeNLbp/RySEkbIjHOdMHHWokdQce1rvGB5UQTz1r1wQw/6rvTXw7xSIZWfmL0 sJm4gJsAIa1dlV33apK1z3QdwnME9d65H1HILW8iDILEj7XxJjMrfCwS1gfH3F3NJl xQBYwTO1n1qvFYGaAu64k7X5lg00xorg5E2y7ZVDWV1AR4QsHgR9te0Wo4Y+UF0USS oYLbfardxCFOA== 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 9BC7AD262A3; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) From: Shrikant Raskar via B4 Relay Date: Wed, 21 Jan 2026 02:05:44 +0530 Subject: [PATCH v6 4/5] iio: proximity: rfd77402: Document device private data structure 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: <20260121-b4-rfd77402_v5-v6-4-5b944d0605dd@gmail.com> References: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> In-Reply-To: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: skhan@linuxfoundation.org, david.hunter.linux@gmail.com, raskar.shree97@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768941363; l=846; i=raskar.shree97@gmail.com; s=20260101; h=from:subject:message-id; bh=ZNRXTbMiZ66e9jZOOxYOba5M4vr3u4LqUYpX35UAbzs=; b=910QesgCgsLpYFqkQ106kEJ2rfknYxgus4+rk6blMJS3uq/dP0wFmz4FyBF/udrtpJWZg8nlL lN0yfK6cy6LCI3RljXnyaXZpA0Ouv5PoRNXjdEw6Q5ob5BFBQ/4hrkU X-Developer-Key: i=raskar.shree97@gmail.com; a=ed25519; pk=4m2wXDvY0vlXefvRRzawNcNAif88Cy4XvbLkU6iMG/Y= X-Endpoint-Received: by B4 Relay for raskar.shree97@gmail.com/20260101 with auth_id=589 X-Original-From: Shrikant Raskar Reply-To: raskar.shree97@gmail.com From: Shrikant Raskar Add kernel-doc style comments for struct rfd77402_data to describe the purpose of each member. Signed-off-by: Shrikant Raskar Reviewed-by: Andy Shevchenko --- drivers/iio/proximity/rfd77402.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/iio/proximity/rfd77402.c b/drivers/iio/proximity/rfd77= 402.c index fce85f783ab4..dd57156a7859 100644 --- a/drivers/iio/proximity/rfd77402.c +++ b/drivers/iio/proximity/rfd77402.c @@ -77,9 +77,13 @@ static const struct { {RFD77402_HFCFG_3, 0x45d4}, }; =20 +/** + * struct rfd77402_data - device-specific data for the RFD77402 sensor + * @client: I2C client handle + * @lock: mutex to serialize sensor reads + */ struct rfd77402_data { struct i2c_client *client; - /* Serialize reads from the sensor */ struct mutex lock; }; =20 --=20 2.43.0 From nobody Mon Feb 9 01:01:04 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 02C1D3AEF4F; Tue, 20 Jan 2026 20:36:05 +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=1768941366; cv=none; b=rLU/ksA5NJCZSfsAJY/YLnQS1K75ZVC5njVu2ev8Hx4tkuKKihWQuXSX1+aH/fJsutpRsZvGYwwDtgFjdqO6ZAKsiVWZru9e3Y+K5+oyGNCr1KuMIc/p108y9n8JV3HGWCNxX99HAQBTnDYPcSSLyeemm51aoBb7ZT0IiKLmA08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768941366; c=relaxed/simple; bh=PiHs9ieTO7aZldytGjEdTi039mUZbMldMTEjYMCEiTk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QVkW4HxDZEMwehuw1HQ/7HFL6XmKJrqSZcTJAXsNP9D32WaC4ZNi5lkTbWQ8MK2Viq57wBQjyZ7mCxujhv24l4Y5tCt4NSFPa+OEzqlPdp3LwgKC7WZnoNDTW7Hc/yQKUaucxjfBVgRsnieFXVZOMj4LZeePNsa4V5ovs7ebN8c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FMxjDTh0; 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="FMxjDTh0" Received: by smtp.kernel.org (Postfix) with ESMTPS id B36C2C2BCB3; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768941365; bh=PiHs9ieTO7aZldytGjEdTi039mUZbMldMTEjYMCEiTk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=FMxjDTh0J8DOlqttWHnL2cG6yHNKLL55JhpfuTZ2oI0VbUuF/Z/ls+GHsouN2X6As 2fX1+dhJ1EbyFUqopr4zei8M7Q2IBB4f4ShgNbOj1rV8EVTPfUCIrDOgfHkdEQPRyJ O90y97LDQ9BXcq3IizPRzu0X9vUd1XLniw4bM8+V1hOkmGFYpb5VUg08XhkaHxJkUF MlmzHzpRmoU9eRBJ9GmL65TDQFZGB2OQWJuubT3D1impmVVuzjlLk/0JG7hcwCW+2G JBZJMF2T+iCZxHONRoB+deRb382yP1xqzyFaEtCDn5MmZPPNlXhpgAmGwzI1DQbOFJ XLHFUC6ZhbtBg== 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 AB9F5D262A1; Tue, 20 Jan 2026 20:36:05 +0000 (UTC) From: Shrikant Raskar via B4 Relay Date: Wed, 21 Jan 2026 02:05:45 +0530 Subject: [PATCH v6 5/5] iio: proximity: rfd77402: Add interrupt handling support 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: <20260121-b4-rfd77402_v5-v6-5-5b944d0605dd@gmail.com> References: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> In-Reply-To: <20260121-b4-rfd77402_v5-v6-0-5b944d0605dd@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: skhan@linuxfoundation.org, david.hunter.linux@gmail.com, raskar.shree97@gmail.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768941363; l=6510; i=raskar.shree97@gmail.com; s=20260101; h=from:subject:message-id; bh=lpmwa4i7bsc/YMuD0p7HkUzy0z4L3FMDiSorcPJ5svc=; b=0Em7D3d0a4nR0IIbhCw54sv3Iz05Yk94mbhxnNMDs4hfBFvJTN77DKufblibt20vFUMAy0oTi do7EoIFJzVOBwmdqpY6Wo80Y9/934FKj2h+dfwAZCck0ItUAcMbJMIK X-Developer-Key: i=raskar.shree97@gmail.com; a=ed25519; pk=4m2wXDvY0vlXefvRRzawNcNAif88Cy4XvbLkU6iMG/Y= X-Endpoint-Received: by B4 Relay for raskar.shree97@gmail.com/20260101 with auth_id=589 X-Original-From: Shrikant Raskar Reply-To: raskar.shree97@gmail.com From: Shrikant Raskar Add interrupt handling support to enable event-driven data acquisition instead of continuous polling. This improves responsiveness, reduces CPU overhead, and supports low-power operation by allowing the system to remain idle until an interrupt occurs. Signed-off-by: Shrikant Raskar --- drivers/iio/proximity/rfd77402.c | 121 +++++++++++++++++++++++++++++++++++= +--- 1 file changed, 113 insertions(+), 8 deletions(-) diff --git a/drivers/iio/proximity/rfd77402.c b/drivers/iio/proximity/rfd77= 402.c index dd57156a7859..7de6faad2b22 100644 --- a/drivers/iio/proximity/rfd77402.c +++ b/drivers/iio/proximity/rfd77402.c @@ -6,20 +6,28 @@ * * 7-bit I2C slave address 0x4c * - * TODO: interrupt * https://media.digikey.com/pdf/Data%20Sheets/RF%20Digital%20PDFs/RFD7740= 2.pdf */ =20 +#include +#include #include +#include +#include #include +#include #include +#include #include +#include =20 #include =20 #define RFD77402_DRV_NAME "rfd77402" =20 #define RFD77402_ICSR 0x00 /* Interrupt Control Status Register */ +#define RFD77402_ICSR_CLR_CFG BIT(0) +#define RFD77402_ICSR_CLR_TYPE BIT(1) #define RFD77402_ICSR_INT_MODE BIT(2) #define RFD77402_ICSR_INT_POL BIT(3) #define RFD77402_ICSR_RESULT BIT(4) @@ -27,6 +35,12 @@ #define RFD77402_ICSR_H2M_MSG BIT(6) #define RFD77402_ICSR_RESET BIT(7) =20 +#define RFD77402_IER 0x02 +#define RFD77402_IER_RESULT BIT(0) +#define RFD77402_IER_M2H_MSG BIT(1) +#define RFD77402_IER_H2M_MSG BIT(2) +#define RFD77402_IER_RESET BIT(3) + #define RFD77402_CMD_R 0x04 #define RFD77402_CMD_SINGLE 0x01 #define RFD77402_CMD_STANDBY 0x10 @@ -81,10 +95,14 @@ static const struct { * struct rfd77402_data - device-specific data for the RFD77402 sensor * @client: I2C client handle * @lock: mutex to serialize sensor reads + * @completion: completion used for interrupt-driven measurements + * @irq_en: indicates whether interrupt mode is enabled */ struct rfd77402_data { struct i2c_client *client; struct mutex lock; + struct completion completion; + bool irq_en; }; =20 static const struct iio_chan_spec rfd77402_channels[] =3D { @@ -95,6 +113,41 @@ static const struct iio_chan_spec rfd77402_channels[] = =3D { }, }; =20 +static irqreturn_t rfd77402_interrupt_handler(int irq, void *pdata) +{ + struct rfd77402_data *data =3D pdata; + int ret; + + ret =3D i2c_smbus_read_byte_data(data->client, RFD77402_ICSR); + if (ret < 0) + return IRQ_NONE; + + /* Check if the interrupt is from our device */ + if (!(ret & RFD77402_ICSR_RESULT)) + return IRQ_NONE; + + /* Signal completion of measurement */ + complete(&data->completion); + return IRQ_HANDLED; +} + +static int rfd77402_wait_for_irq(struct rfd77402_data *data) +{ + int ret; + + /* + * According to RFD77402 Datasheet v1.8, + * Section 3.1.1 "Single Measure" (Figure: Single Measure Flow Chart), + * the suggested timeout for single measure is 100 ms. + */ + ret =3D wait_for_completion_timeout(&data->completion, + msecs_to_jiffies(100)); + if (ret =3D=3D 0) + return -ETIMEDOUT; + + return 0; +} + static int rfd77402_set_state(struct i2c_client *client, u8 state, u16 che= ck) { int ret; @@ -120,6 +173,11 @@ static int rfd77402_wait_for_result(struct rfd77402_da= ta *data) struct i2c_client *client =3D data->client; int ret; =20 + if (data->irq_en) { + reinit_completion(&data->completion); + return rfd77402_wait_for_irq(data); + } + return read_poll_timeout(i2c_smbus_read_byte_data, ret, ret & RFD77402_ICSR_RESULT, 10 * USEC_PER_MSEC, @@ -196,8 +254,20 @@ static const struct iio_info rfd77402_info =3D { .read_raw =3D rfd77402_read_raw, }; =20 -static int rfd77402_init(struct i2c_client *client) +static int rfd77402_config_irq(struct i2c_client *client, u8 csr, u8 ier) { + int ret; + + ret =3D i2c_smbus_write_byte_data(client, RFD77402_ICSR, csr); + if (ret) + return ret; + + return i2c_smbus_write_byte_data(client, RFD77402_IER, ier); +} + +static int rfd77402_init(struct rfd77402_data *data) +{ + struct i2c_client *client =3D data->client; int ret, i; =20 ret =3D rfd77402_set_state(client, RFD77402_CMD_STANDBY, @@ -205,10 +275,26 @@ static int rfd77402_init(struct i2c_client *client) if (ret < 0) return ret; =20 - /* configure INT pad as push-pull, active low */ - ret =3D i2c_smbus_write_byte_data(client, RFD77402_ICSR, - RFD77402_ICSR_INT_MODE); - if (ret < 0) + if (data->irq_en) { + /* + * Enable interrupt mode: + * - Configure ICSR for auto-clear on read and + * push-pull output + * - Enable "result ready" interrupt in IER + */ + ret =3D rfd77402_config_irq(client, + RFD77402_ICSR_CLR_CFG | + RFD77402_ICSR_INT_MODE, + RFD77402_IER_RESULT); + } else { + /* + * Disable all interrupts: + * - Clear ICSR configuration + * - Disable all interrupts in IER + */ + ret =3D rfd77402_config_irq(client, 0, 0); + } + if (ret) return ret; =20 /* I2C configuration */ @@ -288,13 +374,29 @@ static int rfd77402_probe(struct i2c_client *client) if (ret) return ret; =20 + init_completion(&data->completion); + + if (client->irq > 0) { + ret =3D devm_request_threaded_irq(&client->dev, client->irq, + NULL, rfd77402_interrupt_handler, + IRQF_ONESHOT, + "rfd77402", data); + if (ret) + return ret; + + data->irq_en =3D true; + dev_dbg(&client->dev, "Using interrupt mode\n"); + } else { + dev_dbg(&client->dev, "Using polling mode\n"); + } + indio_dev->info =3D &rfd77402_info; indio_dev->channels =3D rfd77402_channels; indio_dev->num_channels =3D ARRAY_SIZE(rfd77402_channels); indio_dev->name =3D RFD77402_DRV_NAME; indio_dev->modes =3D INDIO_DIRECT_MODE; =20 - ret =3D rfd77402_init(client); + ret =3D rfd77402_init(data); if (ret < 0) return ret; =20 @@ -312,7 +414,10 @@ static int rfd77402_suspend(struct device *dev) =20 static int rfd77402_resume(struct device *dev) { - return rfd77402_init(to_i2c_client(dev)); + struct iio_dev *indio_dev =3D dev_get_drvdata(dev); + struct rfd77402_data *data =3D iio_priv(indio_dev); + + return rfd77402_init(data); } =20 static DEFINE_SIMPLE_DEV_PM_OPS(rfd77402_pm_ops, rfd77402_suspend, --=20 2.43.0