From nobody Mon Sep 28 07:19:28 2026 Received: from mail-244106.protonmail.ch (mail-244106.protonmail.ch [109.224.244.106]) (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 468783DDDB0 for ; Tue, 25 Aug 2026 08:28:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646489; cv=none; b=NCXwxG3le0qb77jkyKEKkVZss/aTh3PDepugRrceOLWTDnLsIWYQxzgRLW1g3pNVkbv2ab4qTRw8cHlFZdeW4+m6d6+bxfwJiQZT/hRnJ+alfZEKnigmzYoTNYRM+x6nzNzulnkUSGu3vcP8SZFt98vv5T/yFn3DUWJFqMZ91oY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646489; c=relaxed/simple; bh=Vy2kFGWf40LZZu/OrRKxOp27EqZPY3iYxkaZKLnSAbQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JIc9wqVF4bFiRgbOW1QarZTWd3Wd8P0+QXqwBF5wCgdRs1M7LHduDkRWWR1d+IZfzztNO3U0qx9ki5kZT/j0qYHDvwfZba30Zy8K7VPXaKOJl4H+BnCUyVpuvrpgCL5/jmm8s2SZUTgNK954vh2PZTL45UOFtFXtxH6zzAIJM58= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=zKSEyeMZ; arc=none smtp.client-ip=109.224.244.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="zKSEyeMZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646476; x=1787905676; bh=sNcmNScEhpmF/4cOJIi/n2ntDi0iE/3WYicZo1sq86I=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=zKSEyeMZC9ALIqcj+oNJ7WEDEIFwZ57dLI2pz7DlKjeDyg5cMDiPbnll0i5VOuwx0 SgmeskI7Txdt/o8FvscFGd8eG7+IvYzZ0yyQLXCSNkeAAa9V/z8pZGwmV6jN4H2+I+ ww1bAPCdyXB+lNv9+M8VBH+yb0+kpryO+z2DjGujCX7INfRZL0Hz/NatFHwsntONGo 8QtR7w5ArweRWBQBa2nCl/TWf0dE8fBh91fSQ8wpz8r+la8HjfHtFPKm3lnMFPzaZV Azi1FUaq5moWerNT+00olHOWGJLSizgsjhOFwGzXBgYf79A+m/SuG4SmD7yN1dOW1I P12UuIG4/JsjA== X-Pm-Submission-Id: 4hTgrq1gvwz2Sd57 From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:39 +0200 Subject: [PATCH v6 1/9] dt-bindings: iio: accel: mma8452: Add drive-open-drain 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: <20260825-mma8452-open-drain-v6-1-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=1037; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=Vy2kFGWf40LZZu/OrRKxOp27EqZPY3iYxkaZKLnSAbQ=; b=IzU8EMotoIYwcAYrT69KS1JNYlR4P5lOx3HMAa25p7BK6i8vvrqFcjJ6yP3Je3/az9jxNEOAO 4FIMFc3IiZ1BacypX57zwYv9k3KzXJV7d7DR+AItoUfF7KI7dPbbVTH X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Add new boolean to configure selected interrupt pin to open drain instead of the default push-pull mode. Acked-by: Rob Herring (Arm) Signed-off-by: Esben Haabendal --- Documentation/devicetree/bindings/iio/accel/fsl,mma8452.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/accel/fsl,mma8452.yaml b= /Documentation/devicetree/bindings/iio/accel/fsl,mma8452.yaml index b0dd2b4e116a..20701aa725d0 100644 --- a/Documentation/devicetree/bindings/iio/accel/fsl,mma8452.yaml +++ b/Documentation/devicetree/bindings/iio/accel/fsl,mma8452.yaml @@ -39,6 +39,12 @@ properties: minItems: 1 maxItems: 2 =20 + drive-open-drain: + $ref: /schemas/types.yaml#/definitions/flag + description: the interrupt line will be configured as open drain, whic= h is + useful if several sensors share the same interrupt line. (This bindi= ng is + taken from pinctrl.) + vdd-supply: true vddio-supply: true =20 --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-244108.protonmail.ch (mail-244108.protonmail.ch [109.224.244.108]) (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 A19353E0754; Tue, 25 Aug 2026 08:28:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.108 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646489; cv=none; b=F1tz6bAVnKvK3MfrcJIV0/hUcqzeWEP+eRNLDL8TJDiXc/hNYKsFtuMx/iPo7eUpKtbTpo6I7zWlxdCDO7zlyeq1V99/WtjOheiVxIgQh1pNj05BmzyysJ0XcrC095UXzba9rwdGt7ZOJbsHGmRUYJXxY69THdzcmjzdoRyeV2M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646489; c=relaxed/simple; bh=tzfxlXisttEhbwqNjklxdIHoQtWVVaaErftAi88NK6M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m2LiTeA54IHO2OtBV6J+JIpp7PTOJzHPcyRUundvI8PtyenLEzN0G2DfRtTNUr5rJyCzw3bl07sugYwj+/eQfJNM9R1GEgQCYxiDi/418PSQ6hPKguKF/q1ZpuuZGS6Y36JuZ0McyaGiKzlW5EDLwf+EmVFjghFNHu++Y1xHBo8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=L1BcC1jq; arc=none smtp.client-ip=109.224.244.108 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="L1BcC1jq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646477; x=1787905677; bh=XJ9dsEYOltvcV8dNsiIVCzLj7uR8oL/YLG98qkFwY0A=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=L1BcC1jqPau49phkuBZv/FiPWC5KkM/I7je+tObfaWhjY+ZYTUfVoR1+8C6lU4nyk REwSDpdj3jtDNtaL3w3P79khyUcR8UcTjSrkCX6t1qGY30s9+vb7oIaakAGFAKxYxa aZJc3OzH40EdXmbkuXwSN9A/n9Nbdkvdy5Hmli5LzHvwXdcnXKJfUCMP8PdSmzp2hL 1ki5ZOTh+TpssxDWGl6CxEyhHqomWnbEGiKucyG97t1nHdF7BQWTmVADiVK0PeH2i6 i1OD5WDgnRXw8bVrqKIAET+dgHzMz9xiwDqzJBSKFYfzM1aETLfsx3H1h2iYbhH1sM MDA2h0evKLXJQ== X-Pm-Submission-Id: 4hTgrr56n8z2Schl From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:40 +0200 Subject: [PATCH v6 2/9] iio: accel: mma8452: Optimize struct mma8452_data member orders 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: <20260825-mma8452-open-drain-v6-2-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts , Andy Shevchenko X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=982; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=tzfxlXisttEhbwqNjklxdIHoQtWVVaaErftAi88NK6M=; b=s2Ka+FwNmMLSved+PdYGc2BikCXMKFoM6Rct/Xhp3fRxD2TR1kaaNuBpP8yO6ZCOJzNg3ol3C 2MQJy+gE/mCC5QfY7nL4QiXKLiBah711m//XFyc43/WkrdUd1UDhv3J X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Reorder struct mma8452_data members to avoid holes. Reviewed-by: Joshua Crofts Reviewed-by: Andy Shevchenko Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 7d683686dd9d..f645a5c6fd1c 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -106,10 +106,7 @@ struct mma8452_data { struct i2c_client *client; struct mutex lock; struct iio_mount_matrix orientation; - u8 ctrl_reg1; - u8 data_cfg; const struct mma_chip_info *chip_info; - int sleep_val; struct regulator *vdd_reg; struct regulator *vddio_reg; =20 @@ -118,6 +115,10 @@ struct mma8452_data { __be16 channels[3]; aligned_s64 ts; } buffer; + + int sleep_val; + u8 ctrl_reg1; + u8 data_cfg; }; =20 /** --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-106113.protonmail.ch (mail-106113.protonmail.ch [79.135.106.113]) (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 C03F13E2AAF; Tue, 25 Aug 2026 08:28:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.113 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646497; cv=none; b=ln1Zveag2dRxpE2YtMSyc+nctE0M2uVybv7fUc7zd7JPdXh6z9t9r3M7mV50z99kVOdwMKuVuiXezvut2/FX12Vb1C1ExqwsHW6yq3FtoabUMSn0b9UcH1TS8pJs/ujWrtB4j67uKl3q7zmhfofR4a9JDWkbbAmngT2vfUDN/YQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646497; c=relaxed/simple; bh=aD1+TxIcp78KfszYueEmzVsPlop8UEkQflASuNmtvRA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o2uTqTLTy9q6npBy7N0gY3/MXRHnYShgC65iYPpmjEkEQ+jdMsYugVWmXvyTU5hYskkWwNw067ojxmWi2kWwVrrKrcGARmn8WJkv6eBSHw+PR2Owyr4Ue6t+gVHzDDgmmYEG6uFlbaKTIJpOAwe/jxnmaCWR81T1wrLiT/eI6nk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=ul/X2vNF; arc=none smtp.client-ip=79.135.106.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="ul/X2vNF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646484; x=1787905684; bh=xweKzoAR9wLr7rzqBzvxfCqFwEihx3bUT7MsiLoLTp4=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=ul/X2vNFk0iVPPjy+m0Ax4MnSPMBCHXtk/dImQIDaaPycV1iyihT9Rhkt7JRLpL7s OkuXb+UHnmvTN86byV7TwQ0LDpGnmBNeGckISVRNuy8vmVt0JxjszFcJisUyTtVVE5 SkqZQ/oNrgV8EKEKM6oLw1tJW5yQ+3FZq/KkytPknUZOJNHBs5koxuaw1KhZLQMXRL r0KHideBZE2+mG5osx5PN2ASRP25WhM97tSe5NOj+Gk4TJeEPBgwFgiLkJFjXnaWMD j42hvUX+CcPZGMaUanIbiKzP9YRmxvz4Rf58Nl/UC74EJopmrrd8nwuJUMgfMn+gBL PvWMgHVnod7Lg== X-Pm-Submission-Id: 4hTgrt5JWxz1DDXD From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:41 +0200 Subject: [PATCH v6 3/9] iio: accel: mma8452: Only apply trigger type when not set by firmware 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: <20260825-mma8452-open-drain-v6-3-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Andy Shevchenko X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=1389; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=aD1+TxIcp78KfszYueEmzVsPlop8UEkQflASuNmtvRA=; b=fvfyaz9bxeB75nk4qWf7Vf0CktM60chtF7H1qLj1GSngVB/hsiu0F2hdx3iqaiU2w0pjYHleR Dp2CPYho582DWpY0Mc3bS1JJfvzxxOb4UwtceERnhu2d+4X4mPrzrcb X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Instead of unconditionally overriding the trigger type, it is better to only apply a default when no trigger type is set by firmware. This should be reasonably backward compatible, and should only potentially cause problems if systems exist where firmware specifies an incorrect trigger type. With a bit of luck, there are no such systems. Reviewed-by: Andy Shevchenko Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index f645a5c6fd1c..1fb43c5b0b72 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1683,9 +1683,16 @@ static int mma8452_probe(struct i2c_client *client) goto trigger_cleanup; =20 if (client->irq) { + unsigned long irq_flags; + + irq_flags =3D irq_get_trigger_type(client->irq); + if (irq_flags =3D=3D IRQ_TYPE_NONE) { + dev_info(dev, "invalid irq type, setting default active low\n"); + irq_flags =3D IRQF_TRIGGER_LOW; + } + irq_flags |=3D IRQF_ONESHOT; ret =3D request_threaded_irq(client->irq, NULL, mma8452_interrupt, - IRQF_TRIGGER_LOW | IRQF_ONESHOT, - client->name, indio_dev); + irq_flags, client->name, indio_dev); if (ret) goto buffer_cleanup; } --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-4321.protonmail.ch (mail-4321.protonmail.ch [185.70.43.21]) (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 08EEA3E0234 for ; Tue, 25 Aug 2026 08:46:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787647621; cv=none; b=OlfVhCH35W5VfskB46akkwrBnabiK4P9lxyQNxFm02AdR4JkfISBiV+5OJpsptE+yM/G2HgjgXAlUPkatimFkRb0R5TJfW/o2ckIA1SZ6sbV84XFGL8fVMXE3un1FQQVgdRjYmkVaDfZD0NThd2NW2D+kUej8SCLQWtB5DKxN7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787647621; c=relaxed/simple; bh=yRgVg8kdyjJHkMUb35ShRoAw17aDHC3xvQwJhwTA9xY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bY1oxgRoUYpS5mrv7XirLfo6QdqATxqhLQh89nh31jR1y/BcWaNrLdm/7IApCKCFdGFjElONeVR2Tu3eYmZbZvEuqdW+Gz5ukQpstqQ7Hx7ifcZg4acyEbwMFznF/R2l+2ONebQibQPq0EPmCsm1Z5L5q1HLDNidk+0yjkdCzBU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=Z7IVdOCL; arc=none smtp.client-ip=185.70.43.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="Z7IVdOCL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646485; x=1787905685; bh=YjaPdxyYrTLXVHyfD40d9EwncEOPh7AQsvCv5CpeVQM=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=Z7IVdOCLDWNqYcWygDiJteDIjj3YQ0hds+CpxTmvW1YOCBFkvp4PfaH6czAM/91wj wtvS1oYrd9a+V3ORhWCzGrtDKY6CrSvyD2W/TzdA6mMEOOuEZAlGHDSO3IprtZmssP nix/tMmpRI4gsSPD6dao2JnSH4sCs0WlbMieH3dzHSPOQzD/TEbGTNliqiGdarFPGU S3TuU60Z9S7A2POBj3cgwUP6s+c/8Sa4/0XcI/8vyAEsbsnyRWeLA/Mal6F9lDWk20 iaf7CIlnSAytclTGh0g20VjF76woswNYf8VCUnI/YIxfFkZKgNNc36TdTePhJQOUIg MIf/f8E0xAfdA== X-Pm-Submission-Id: 4hTgrz6JRpz1DFFp From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:42 +0200 Subject: [PATCH v6 4/9] iio: accel: mma8452: Support interrupt sharing 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: <20260825-mma8452-open-drain-v6-4-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=3229; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=yRgVg8kdyjJHkMUb35ShRoAw17aDHC3xvQwJhwTA9xY=; b=zczf2KIuo+LycLwc2vhNcznJzVqCJ+7p/hiJRzmhQYZjCB9hzON3tOF/WX6L58eKNFMpIp3RO aCmm811hUnMBApRq0an5vptQHKVCKJvSgWAcVTScHUepfzFuHNImZMH X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Adding handling of rutnime PM suspension in the interrupt handler allows sharing interrupt with other devices. Keep in mind that the device by default is using push-pull for the irq pin, which might require additional hardware design to allow interrupt sharing. The suspended flag is added together with synchronize_irq() in order to protect against race conditions when doing runtime suspend and device removal. This way we ensure that interrupt handler does not try to access the device while regulators are disabled. Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 1fb43c5b0b72..8eb97e6793d6 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -119,6 +119,7 @@ struct mma8452_data { int sleep_val; u8 ctrl_reg1; u8 data_cfg; + bool suspended; }; =20 /** @@ -1056,14 +1057,24 @@ static irqreturn_t mma8452_interrupt(int irq, void = *p) struct iio_dev *indio_dev =3D p; struct mma8452_data *data =3D iio_priv(indio_dev); irqreturn_t ret =3D IRQ_NONE; + int pm_status; int src; =20 + pm_status =3D pm_runtime_get_if_active(&data->client->dev); + if (pm_status =3D=3D 0) + return IRQ_NONE; /* device is powered down */ + if (READ_ONCE(data->suspended)) { + /* device is being removed */ + ret =3D IRQ_NONE; + goto out_runtime_put; + } + src =3D i2c_smbus_read_byte_data(data->client, MMA8452_INT_SRC); if (src < 0) - return IRQ_NONE; + goto out_runtime_put; =20 if (!(src & (data->chip_info->enabled_events | MMA8452_INT_DRDY))) - return IRQ_NONE; + goto out_runtime_put; =20 if (src & MMA8452_INT_DRDY) { iio_trigger_poll_nested(indio_dev->trig); @@ -1089,6 +1100,10 @@ static irqreturn_t mma8452_interrupt(int irq, void *= p) ret =3D IRQ_HANDLED; } =20 +out_runtime_put: + if (pm_status > 0) + pm_runtime_put_autosuspend(&data->client->dev); + return ret; } =20 @@ -1690,7 +1705,7 @@ static int mma8452_probe(struct i2c_client *client) dev_info(dev, "invalid irq type, setting default active low\n"); irq_flags =3D IRQF_TRIGGER_LOW; } - irq_flags |=3D IRQF_ONESHOT; + irq_flags |=3D IRQF_ONESHOT | IRQF_SHARED; ret =3D request_threaded_irq(client->irq, NULL, mma8452_interrupt, irq_flags, client->name, indio_dev); if (ret) @@ -1774,6 +1789,10 @@ static int mma8452_runtime_suspend(struct device *de= v) return -EAGAIN; } =20 + WRITE_ONCE(data->suspended, true); + + synchronize_irq(client->irq); + ret =3D regulator_disable(data->vddio_reg); if (ret) { dev_err(dev, "failed to disable VDDIO regulator\n"); @@ -1808,6 +1827,8 @@ static int mma8452_runtime_resume(struct device *dev) return ret; } =20 + WRITE_ONCE(data->suspended, false); + ret =3D mma8452_active(data); if (ret < 0) goto runtime_resume_failed; @@ -1822,6 +1843,7 @@ static int mma8452_runtime_resume(struct device *dev) return 0; =20 runtime_resume_failed: + WRITE_ONCE(data->suspended, true); regulator_disable(data->vddio_reg); regulator_disable(data->vdd_reg); =20 --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-244106.protonmail.ch (mail-244106.protonmail.ch [109.224.244.106]) (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 5EC643E1203; Tue, 25 Aug 2026 08:28:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646503; cv=none; b=KqzJx+n9DqOmPrQvuFowsNz1V/F8vijXcxErnn5ZEe28pAhmnA8TzD+zffR20YJulVkDorRBV9ZC7q+feD+WF/gSftc8aBsKLPFD9o5dmDKqGnEGzu2Pt1UM8nDSqOQH+ScfQHSyauWRg41b3myxLNy1UmJUF5fbcFM02ny3W4A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646503; c=relaxed/simple; bh=HlvxYOWq6eDsSdHI0AwbaTsDYFGxu6nJIE6bkTtBMd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HngGcRCYsjXgj5NVOcq7LMyrEmy2NQwSCrlEFK6AxAVqLd9wACsy7N3Rp6d0I0404lS7RV4xJkMToQI+yCoZ1XUgIiUokF9J6paZQfbjw7/UWHd2kMpUL7QiAqnZcK+Mieq1nmX/kdjMfy6r2NpqPqrbEpqaoWIVDh5h5Eypkrs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=UsJiW+vR; arc=none smtp.client-ip=109.224.244.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="UsJiW+vR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646487; x=1787905687; bh=VIfRiCdbUFiOfSKmsdZ1/h0GA0pxwFydra/kW9OYaWk=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=UsJiW+vRrzVVOfiYkQI+JjJmKzNDEh4aYMVX3UeV1lr9Swx1/T1iIWg+jZKUT5aw3 ahzqna/BjEJgJ8ONnSMZJH2njCf79MX4w4MoXF2g3vIHVbj5IbMKBgb3iIy6b+2SZ/ eVWjFtR51ouoZ6v5mBHvI9vkPnN5WFd0MBiopoGYAb/OnJUBWgUO1HCKKAvr091oIX KaxL1JqONGG0VF6TuMfYYpcXACJ0Hkb3KANUgfx3fukrYjxB4HO590CrrjUsqMdC/E eR5EDs6T5XrE4nODFN+q4NM05FfClsltNsZA6lDWwhpLxU56FtpJr9DSMM7dlLWqAK ugRmgphvCdn8g== X-Pm-Submission-Id: 4hTgs105kQz2SdHM From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:43 +0200 Subject: [PATCH v6 5/9] iio: accel: mma8452: Allow open drain interrupt pin configuration 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: <20260825-mma8452-open-drain-v6-5-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Andy Shevchenko X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=2409; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=HlvxYOWq6eDsSdHI0AwbaTsDYFGxu6nJIE6bkTtBMd8=; b=Cn7ACai13Ag76fmaoG54YHHTA/ex1UwS8wQv/+iyc+UXbOXytGw0ESN4nbYHzLums6NGOtXhw p7JuL8rEPskBuJrmFvQz5uImOMMVXPpG903XrTi0yUiqomMHJ0mEvD5 X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= When designing systems sharing the interrupt for mma8452 chips, it is helpful to be able to configure the irq pin in open-drain mode (default is push-pull). Reviewed-by: Andy Shevchenko Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 8eb97e6793d6..d1e8eb2a4ad3 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -81,6 +81,8 @@ #define MMA8452_CTRL_REG2_RST BIT(6) #define MMA8452_CTRL_REG2_MODS_SHIFT 3 #define MMA8452_CTRL_REG2_MODS_MASK 0x1b +#define MMA8452_CTRL_REG3 0x2c +#define MMA8452_CTRL_REG3_PP_OD BIT(0) #define MMA8452_CTRL_REG4 0x2d #define MMA8452_CTRL_REG5 0x2e #define MMA8452_OFF_X 0x2f @@ -120,6 +122,7 @@ struct mma8452_data { u8 ctrl_reg1; u8 data_cfg; bool suspended; + bool open_drain; }; =20 /** @@ -648,6 +651,22 @@ static int mma8452_set_power_mode(struct mma8452_data = *data, u8 mode) return mma8452_change_config(data, MMA8452_CTRL_REG2, reg); } =20 +static int mma8452_set_interrupt_pin_mode(struct mma8452_data *data) +{ + int reg; + + reg =3D i2c_smbus_read_byte_data(data->client, MMA8452_CTRL_REG3); + if (reg < 0) + return reg; + + if (data->open_drain) + reg |=3D MMA8452_CTRL_REG3_PP_OD; + else + reg &=3D ~MMA8452_CTRL_REG3_PP_OD; + + return i2c_smbus_write_byte_data(data->client, MMA8452_CTRL_REG3, reg); +} + /* returns >0 if in freefall mode, 0 if not or <0 if an error occurred */ static int mma8452_freefall_mode_enabled(struct mma8452_data *data) { @@ -1682,6 +1701,11 @@ static int mma8452_probe(struct i2c_client *client) goto disable_regulators; } =20 + data->open_drain =3D device_property_read_bool(dev, "drive-open-drain"); + ret =3D mma8452_set_interrupt_pin_mode(data); + if (ret) + goto trigger_cleanup; + data->ctrl_reg1 =3D MMA8452_CTRL_ACTIVE | (MMA8452_CTRL_DR_DEFAULT << MMA8452_CTRL_DR_SHIFT); =20 @@ -1829,6 +1853,10 @@ static int mma8452_runtime_resume(struct device *dev) =20 WRITE_ONCE(data->suspended, false); =20 + ret =3D mma8452_set_interrupt_pin_mode(data); + if (ret) + goto runtime_resume_failed; + ret =3D mma8452_active(data); if (ret < 0) goto runtime_resume_failed; --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-244106.protonmail.ch (mail-244106.protonmail.ch [109.224.244.106]) (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 A2CE93E1204; Tue, 25 Aug 2026 08:28:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646504; cv=none; b=as2VWgPxcKxjUya3CYUihb7M2ZyqbUcDhj41m9BSGhYae3Zyy3eU6Z4zDeXlxcyF3ydQ2t6n+HU9MTUWZ+e44mnVMFKVSbducaUg5lyW8vMyunpvjzTufj+kkkLKxmhKWzumsT2vfE6R4rLbcIlbJz5YJPjgenmENX5n6NC3Bu4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646504; c=relaxed/simple; bh=bojCcomNTsdEGb4oeI4rcH3xpLlA9mJQriR/9T1ndoA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tKBb3QOGfyANuOefEAzreoBdgnY5N6qzL1KHsPW0j/M7rEcDArm+6tP+sgSe2CZuCmY30FQVNyKHUzKo+IGbjbsjK9YaLADJjrF1E1xY7GwAVEqi1Hedp+t8hq5lkUdAPTqyycIr9UuJ8sRB+SZAPVSe9HE8VRKeUcVXLGGY2UA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=mqmiiysv; arc=none smtp.client-ip=109.224.244.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="mqmiiysv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646488; x=1787905688; bh=+WAZ4hdv+APN6X7EegqQeBOAzEEU6LCBR/Gp11AEPYg=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=mqmiiysvD020t46eLzBJ+tmjLUIr62B0k0uPXOIYMOiMNdpsjagfuoP+Ve8Bng/lS uUlUUrBIQoIQvKb2+0ddjbvcppfKTTFud/cbnz+YlYe09dDJvgaEsQJXFEoSNaCdI9 D4Byjh4Pnpw4Qr5ko+lTrFHqOEZvXdqKCrkh7LCilq+ffyjErteFkUidXJrcKONiYb g9CeyDqXdnN9rBv9nHd/d3F0zYKbuW9jodqXW3TglEJii0P9ZhB2cOdyR5h/lFwP0m 0ZROiALSY6X+oTrylHSLK7i2o13qupD3EopBZc/SbutvQIOOX81l+91RHqbRD+XEf7 mS4yJvwRkiLrA== X-Pm-Submission-Id: 4hTgs3344Wz2SdHS From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:44 +0200 Subject: [PATCH v6 6/9] iio: accel: mma8452: Reuse existing dev pointer in mma8452_probe() 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: <20260825-mma8452-open-drain-v6-6-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Crofts X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=4502; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=bojCcomNTsdEGb4oeI4rcH3xpLlA9mJQriR/9T1ndoA=; b=C5KuQGS24dzGUd9/7Yf5RS3dcvJqTNJSy++rQc3/YgjSWS1/NYOmynM1i2PYM/xt56sh/daQR hjXOaAozd+1Cjn7PH9p0r5CZNPOSQls82nVvceRbX1uqXF83ZZRKyeq X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= In commit 32a5c04d4575 ("iio: accel: mma8452: Use dev_err_probe()") the struct device * pointer was assigned to local variable dev, so we can just as well reuse that throughout the function for sligthly more readable code. Reviewed-by: Joshua Crofts Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index d1e8eb2a4ad3..7ef1a9a91c31 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1587,7 +1587,7 @@ static int mma8452_probe(struct i2c_client *client) struct iio_dev *indio_dev; int ret; =20 - indio_dev =3D devm_iio_device_alloc(&client->dev, sizeof(*data)); + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) return -ENOMEM; =20 @@ -1597,21 +1597,20 @@ static int mma8452_probe(struct i2c_client *client) =20 data->chip_info =3D i2c_get_match_data(client); if (!data->chip_info) - return dev_err_probe(&client->dev, -ENODEV, - "unknown device model\n"); + return dev_err_probe(dev, -ENODEV, "unknown device model\n"); =20 - ret =3D iio_read_mount_matrix(&client->dev, &data->orientation); + ret =3D iio_read_mount_matrix(dev, &data->orientation); if (ret) return ret; =20 - data->vdd_reg =3D devm_regulator_get(&client->dev, "vdd"); + data->vdd_reg =3D devm_regulator_get(dev, "vdd"); if (IS_ERR(data->vdd_reg)) - return dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg), + return dev_err_probe(dev, PTR_ERR(data->vdd_reg), "failed to get VDD regulator!\n"); =20 - data->vddio_reg =3D devm_regulator_get(&client->dev, "vddio"); + data->vddio_reg =3D devm_regulator_get(dev, "vddio"); if (IS_ERR(data->vddio_reg)) - return dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg), + return dev_err_probe(dev, PTR_ERR(data->vddio_reg), "failed to get VDDIO regulator!\n"); =20 ret =3D regulator_enable(data->vdd_reg); @@ -1643,7 +1642,7 @@ static int mma8452_probe(struct i2c_client *client) goto disable_regulators; } =20 - dev_info(&client->dev, "registering %s accelerometer; ID 0x%x\n", + dev_info(dev, "registering %s accelerometer; ID 0x%x\n", data->chip_info->name, data->chip_info->chip_id); =20 i2c_set_clientdata(client, indio_dev); @@ -1676,10 +1675,10 @@ static int mma8452_probe(struct i2c_client *client) if (client->irq) { int irq2; =20 - irq2 =3D fwnode_irq_get_byname(dev_fwnode(&client->dev), "INT2"); + irq2 =3D fwnode_irq_get_byname(dev_fwnode(dev), "INT2"); =20 if (irq2 =3D=3D client->irq) { - dev_dbg(&client->dev, "using interrupt line INT2\n"); + dev_dbg(dev, "using interrupt line INT2\n"); } else { ret =3D i2c_smbus_write_byte_data(client, MMA8452_CTRL_REG5, @@ -1687,7 +1686,7 @@ static int mma8452_probe(struct i2c_client *client) if (ret < 0) goto disable_regulators; =20 - dev_dbg(&client->dev, "using interrupt line INT1\n"); + dev_dbg(dev, "using interrupt line INT1\n"); } =20 ret =3D i2c_smbus_write_byte_data(client, @@ -1736,14 +1735,13 @@ static int mma8452_probe(struct i2c_client *client) goto buffer_cleanup; } =20 - ret =3D pm_runtime_set_active(&client->dev); + ret =3D pm_runtime_set_active(dev); if (ret < 0) goto free_irq; =20 - pm_runtime_enable(&client->dev); - pm_runtime_set_autosuspend_delay(&client->dev, - MMA8452_AUTO_SUSPEND_DELAY_MS); - pm_runtime_use_autosuspend(&client->dev); + pm_runtime_enable(dev); + pm_runtime_set_autosuspend_delay(dev, MMA8452_AUTO_SUSPEND_DELAY_MS); + pm_runtime_use_autosuspend(dev); =20 ret =3D iio_device_register(indio_dev); if (ret < 0) @@ -1801,7 +1799,8 @@ static void mma8452_remove(struct i2c_client *client) #ifdef CONFIG_PM static int mma8452_runtime_suspend(struct device *dev) { - struct iio_dev *indio_dev =3D i2c_get_clientdata(to_i2c_client(dev)); + struct i2c_client *client =3D to_i2c_client(dev); + struct iio_dev *indio_dev =3D i2c_get_clientdata(client); struct mma8452_data *data =3D iio_priv(indio_dev); int ret; =20 @@ -1809,7 +1808,7 @@ static int mma8452_runtime_suspend(struct device *dev) ret =3D mma8452_standby(data); mutex_unlock(&data->lock); if (ret < 0) { - dev_err(&data->client->dev, "powering off device failed\n"); + dev_err(&client->dev, "powering off device failed\n"); return -EAGAIN; } =20 --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-106111.protonmail.ch (mail-106111.protonmail.ch [79.135.106.111]) (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 7F9D63E1CF4 for ; Tue, 25 Aug 2026 08:28:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.111 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646510; cv=none; b=elGwBkdYaY4G3LAoZy3kkI+7/YiwOC8I0Zpwz3QdlQnVLb814UY+v7EuUU0if0Pqesh3yBBATU5fKLDNFymMQvSxiwlsUykzLRTaI/rKMd2cuN4byFkEXko/uQju823X6X62nhJSHetjM9FXgZJyIgT/hYbM1N/u46df8J6396g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646510; c=relaxed/simple; bh=CQt4VpK/gUFi5hSBjRzPqWtP7oV7ZZDzAs8aCFm4k/Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FXhG4BjQbbJThjaqfpZPkoCvuRQLzq/cndBKD5tPKP1HKj4rR3qg0NrNfPEzWwKb0O2iLxAGq9KJ0IEPwlA0Pdlt6tYTPBFq/nAVtON9SJ0nlX9yaeJqaDmEiPZW7IpGqBE4bC/x6l/bknBrauwRVL6sbl9vTxgwTTRNWvEnAy4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=ZJDDTq/b; arc=none smtp.client-ip=79.135.106.111 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="ZJDDTq/b" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646489; x=1787905689; bh=d5ddm8RHR5lDiVqtBd299JMtTIifk4yTFA/MF5oUCJc=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=ZJDDTq/bORQlpb61aVxIqc905jK6ACLFORP69RjuaiRj1f3SbtzHXX+fqj/FGz//v aLOG51d7EOYpnqJrikkYN5ArvM/w5s0rbrYt/ZGHqzZpQqvHrHfn9N0HpP+CFDANqk dV2uTYjY+byuLW3f2y1XhAbjHnpOZIacBwbLvhO9nj24+H5vDeJNtEyiZunbhz8mNb WVcPL0cZnvmYDBL4jPvmfiVEqUYLdAsreF3UPltuc/OPGqAamrKV0J88uwcJJ8q+DQ tjdOnhDgfX9o7Pc1lZ2pgOSRrnk3r3DZ9SO5c8OsjHM7/UPOUrM3WeEv2rm3tJeKg+ 88npcZ1NODoqw== X-Pm-Submission-Id: 4hTgs50jlpz1DF71 From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:45 +0200 Subject: [PATCH v6 7/9] iio: accel: mma8452: Drop unneeded lock acquire on read 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: <20260825-mma8452-open-drain-v6-7-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646470; l=798; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=CQt4VpK/gUFi5hSBjRzPqWtP7oV7ZZDzAs8aCFm4k/Y=; b=dkMez87xduDXmHM4peUonBDf/y8dUJ39W59T1qDDI+esuebzXFADHYw7vEKjewKCkZWyxMki7 9V6Ziyu+mXSD+WvrieI81pjbjLYmNAQvS/R3UGaxQ1kxbO7Q6G85KOY X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= There is no need to acquire data->lock when calling mma8452_read(), and dropping that makes it less likely to end up in an AB-BA deadlock situation. Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 7ef1a9a91c31..9ae2c3e60576 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -504,9 +504,7 @@ static int mma8452_read_raw(struct iio_dev *indio_dev, if (!iio_device_claim_direct(indio_dev)) return -EBUSY; =20 - mutex_lock(&data->lock); ret =3D mma8452_read(data, buffer); - mutex_unlock(&data->lock); iio_device_release_direct(indio_dev); if (ret < 0) return ret; --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-4321.protonmail.ch (mail-4321.protonmail.ch [185.70.43.21]) (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 23E863E4C73 for ; Tue, 25 Aug 2026 08:35:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646929; cv=none; b=XEZ78OPTMJaHSVbTv9O5NXbM+3OFnpIcbp1HxAVbH/KVET4BBxOvpeRfJDGvt9bNQphgN79htZdVfpKfQjIuzCppFnh+fXbISvxZDXuz96XhoogY/XSpYG0f24h5Jsnjw3hWxhaVIN9SqRd+1/xe2ByMgFmw8pUyp3EqTUyZysw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646929; c=relaxed/simple; bh=1z0WUiVnn2gL6zCBHOZj+zdKzGyMpC2Pb+E7fuMMRBo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DgVlIIDcJNlHK6t8vfHP6vZfd4KLdK+SLIt5x75E9rrL7qvcG+m0BwVh9kP+fy0o+2JOmgYLogy+9W1NhTvWFCfsqiG1esGdbWn2DfO+H2bveIXWTaZ6waSaFR8yHhH+ac1MTXqUGOUWb3pf6qfX6QXI22K/P7bBdC9F4h9xqXc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=xj0Xvk7v; arc=none smtp.client-ip=185.70.43.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="xj0Xvk7v" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646491; x=1787905691; bh=G+moMU66xe+zRT76qfdaUjZtuqPx+W960mBLJAs2W2w=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=xj0Xvk7vo0SpIGiwA2nuFP1Dr8ih0ccRjLK1RO/p38mDvPPtvgnGKBiOTi4LDApC1 LMmjw0aidaDyd4tVSNRjcUUgrYxg35TH5HHVM1072IeIMEAMAWbEQlxDcyqRgn9lt9 ZEoxZ8VmS/C6UvsPgYFGQLxv7folgjtc8PIPeohLH/tLQjnOylMsJIZOXqw3HHJR5u 1Ow6DGjBIugMzvFUPeUa9nP10J08nMRrI1s0OEi1TLXHT/budMwHYtZJQG42n4wxy2 Wy3EBgnNWAvMOdmgA6vWQQiqjoJ2pQDzgsSaNJf2hx8LT7xGF5yIBSAMOkYDuKx9k9 3dseUhtgrKC6A== X-Pm-Submission-Id: 4hTgs61BWNz2Sd57 From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:46 +0200 Subject: [PATCH v6 8/9] iio: accel: mma8452: Fix use-after-free bug in error error path 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: <20260825-mma8452-open-drain-v6-8-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646471; l=1149; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=1z0WUiVnn2gL6zCBHOZj+zdKzGyMpC2Pb+E7fuMMRBo=; b=r2DuqUSv5tCijZ2tk8Sj2yWbZg9aBRV+xN5e1OoEx90HTVRkyfMqJYfYRXP/sCL3fQ0pky41s CSkeiQwSZBFD5PBq0BugISza57bIwG0cP7yywr+uAIjnCBhfAmD9/zE X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= If mma8452_probe() fails in iio_device_register() or later, we could end up with runtime suspend callback being called with a now freed device pointer. Fixes: 96c0cb2bbfe0 ("iio: mma8452: add support for runtime power managemen= t") Cc: stable@vger.kernel.org Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 9ae2c3e60576..4a1eb196589a 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1743,7 +1743,7 @@ static int mma8452_probe(struct i2c_client *client) =20 ret =3D iio_device_register(indio_dev); if (ret < 0) - goto free_irq; + goto runtime_suspend; =20 ret =3D mma8452_set_freefall_mode(data, false); if (ret < 0) @@ -1754,6 +1754,10 @@ static int mma8452_probe(struct i2c_client *client) unregister_device: iio_device_unregister(indio_dev); =20 +runtime_suspend: + pm_runtime_disable(dev); + pm_runtime_set_suspended(dev); + free_irq: if (client->irq) free_irq(client->irq, indio_dev); --=20 2.55.0 From nobody Mon Sep 28 07:19:28 2026 Received: from mail-244106.protonmail.ch (mail-244106.protonmail.ch [109.224.244.106]) (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 AAC783E16A9 for ; Tue, 25 Aug 2026 08:28:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646500; cv=none; b=D2gLr85H8jof0WsdE41blnagtYW+t5XCnBwJjsGWLN4nR+2rLd+KZn9KnLzUOqvSyYjHvg5F3zy7g54ltCbYidvrAlnCJpWLOfOoNK8Qa18gz6bFAKjyd2knFfc6e6B2t5/7XsvyLtAFPNnl8c3MuHP1ZBCT2v9Ld2TNDudrHck= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787646500; c=relaxed/simple; bh=J6CKXdotQJvIeF+neKbCAV4H2dOi46lSn607hWnvJHo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Yq5/aDgnBLKTDO2YC5eJ1GlYLmA3vxAe/8y9SBd69WcSL9WWXvFFFaoOCkKId+stzwh56qNb8Diqf3UwPkXI3GopqI1EA697Elz4WX423ycIAK3xrNJ7oAD0VKkoaLUI5f4d6xRZ+n1Z8sNzYuw0zLHxT5D47XBDogV+EpyiAMQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=vHowW50z; arc=none smtp.client-ip=109.224.244.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="vHowW50z" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1787646493; x=1787905693; bh=EarRR+97sPOUmJYkWqPaFQKiuHmjI0O2lNgzU7W0Ogc=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=vHowW50zwAULbZXsjftw84vpOWwQh8MzFtD+ckcMhBh8S340nLUcXYOF2DQ5Yg3U1 e2YphIVUM9i7Bvo3OxmECcBf/ew1G9UVow5iOTvm9vKUBWtCUi9C1JcL4YPLJYLUas UkfinK+92xzxdGvSkIt7v19ynmaYxxH70iiazKefsYKPaUKzq1YxXEDKcgCR0sd13j wJPe42qgUOukgjczEj8jfpRPiZ3rmZBzN3ZDbSAHm+M4yVCdatAp25IXnsJTVQ/Y/s cC4jaqFWKnEFzAan3ArtqunLe9VIIVBF5zCWnovhJJWAExmRlQ9zZIWcMS3eEou1U3 OudfLERGMSzvg== X-Pm-Submission-Id: 4hTgs80mXkz2Schg From: Esben Haabendal Date: Tue, 25 Aug 2026 10:27:47 +0200 Subject: [PATCH v6 9/9] iio: accel: mma8452: Use proper error code when missing device model 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: <20260825-mma8452-open-drain-v6-9-9b252804ee80@geanix.com> References: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> In-Reply-To: <20260825-mma8452-open-drain-v6-0-9b252804ee80@geanix.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger , Sean Nyekjaer , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Martin Kepplinger , Christoph Muellner Cc: Esben Haabendal , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787646471; l=771; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=J6CKXdotQJvIeF+neKbCAV4H2dOi46lSn607hWnvJHo=; b=NOF4eK62RTqiBQZ+qlLgEeH8D2SjUD4JILDi3yeONx0IBLUt6t0SorwASxs8J1XzaWg2x1OtA cxKDa5mlKIKBGo5c5v30UiQkRdNl5RstPWtTFp8LonZVQy31FwXxafK X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= The device is there, but we don't have data describing how to use it. Signed-off-by: Esben Haabendal Reviewed-by: Joshua Crofts --- drivers/iio/accel/mma8452.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 4a1eb196589a..42e3371cdb1d 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1595,7 +1595,7 @@ static int mma8452_probe(struct i2c_client *client) =20 data->chip_info =3D i2c_get_match_data(client); if (!data->chip_info) - return dev_err_probe(dev, -ENODEV, "unknown device model\n"); + return dev_err_probe(dev, -ENODATA, "unknown device model\n"); =20 ret =3D iio_read_mount_matrix(dev, &data->orientation); if (ret) --=20 2.55.0