From nobody Sat Sep 26 18:55:43 2026 Received: from mail-106112.protonmail.ch (mail-106112.protonmail.ch [79.135.106.112]) (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 C61EF346AF1 for ; Mon, 31 Aug 2026 12:17:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178646; cv=none; b=LSl2OQ1w82HQ535cRveHWu+t3UqED15+qwDlQ7VGqsVsH7dAoI1kt7Gm9v5/G3sMzySnEbTpoWsgJZhmwzbhWa82RL6a4IjWUnafJbIxlQQjMRy6N55QWvbjGziqOuS+HQPSCYf4/zX/b62q9uo1btmbca7vk+zHF1XY9JIJav0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178646; c=relaxed/simple; bh=Vy2kFGWf40LZZu/OrRKxOp27EqZPY3iYxkaZKLnSAbQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vo5vzXP7HmWJ+N6LYcuzNM304Y2P4qsFXFBeehAplLT/zoFi06pjCOKb9IOTnDYKl46Obq1aFXxrtv78cW9Ilc7FJ5b45eeIFSPh5gxXLJdUx8kZ0j8Nb+UBWlWwBklIdjpY18uvBXMLQkNLOh1wXAqLQbn09JumDrAxIgSyIhc= 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=nRhH9NSc; arc=none smtp.client-ip=79.135.106.112 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="nRhH9NSc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178633; x=1788437833; 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=nRhH9NSc92ZYMUwzdJNS5VpDM8f8YpR8oa4GmCzGRWDW3M53HIwPaWgzg5O/w4mbs pPs/VpP1+zDMILYBIe47Xe7fNJLS3EVsxcvWZ8lB1Nb8PAa1fvwvlSj944WR9f3dEp XDDCQbvTU3b+1dGdemaw3M/WSbYUGtTTMfZb2QZ6HmlsRZu55R8GVAgJLf88m0iE0r a66Z6h4XuPD/pOUsNnhPCn+C2MUpV4JMJCYp5jGGJyvic0Z7MBr9lG4qrc8Dkg3ZuL YrICFcF6xBnEfWDozI1n+CRwK7y/zGfXTasdiSPlkjDU+DP0sKOI8PG0n5W81tQe10 UhJVBNyVEjsKw== X-Pm-Submission-Id: 4hYSfb5Snjz1DDXQ From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:04 +0200 Subject: [PATCH v7 1/8] 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: <20260831-mma8452-open-drain-v7-1-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=1037; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=Vy2kFGWf40LZZu/OrRKxOp27EqZPY3iYxkaZKLnSAbQ=; b=DXHc+uKi/yR1s1twavDUxo/8lj9+VPiwA3+4dLZjlUP9Z1lYujYeKbhylHRdrZAOny3Ci3s8v CsRceiBujocD64k4C7BMudxVUzJ7zl4AUfT8mhSZDCGuOPTZdX6lhWi 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 Sat Sep 26 18:55:43 2026 Received: from mail-43172.protonmail.ch (mail-43172.protonmail.ch [185.70.43.172]) (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 DC9FE3F58FE for ; Mon, 31 Aug 2026 12:17:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178646; cv=none; b=moG5Jy6yGy+aWILfWHLUYZykJC14DL53ptCGQV7GzCZQLAvW1XxSRIj4B5V/oG0KTBRX/4fDlgl1UBS1RfOnmxvrLzkrFtE7k6AQ/bPEpJxAWlG8kbHbWLM0ZQDN9rwdwZC/uC09iuZR94JnZYWtL0XMoR4qq6ZzpBgjGE85uaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178646; c=relaxed/simple; bh=tzfxlXisttEhbwqNjklxdIHoQtWVVaaErftAi88NK6M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EjCDBWUoSD5pl8K/ltksndqfBCwPOwTMx1Ffp0ksxDLsw2vpyK2Fc9O5ZIyfyarjhwe4CiIW4smi4TYGgTLrjFB11oSkO9M1oNTf6LVi9WYpoaoCzmTIktulaFF6Ww1anCllyOxVInOqQwzfxcVPeQ5Q8V2k6mk284EpJMlYOfs= 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=fa2uKZV1; arc=none smtp.client-ip=185.70.43.172 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="fa2uKZV1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178635; x=1788437835; 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=fa2uKZV1VhrZvLVOtOwi/So99G3BJONP5R2rRg/0yt652T90fhNyBuGFFSVz/XIk7 GsHz2PaN1LAYB2BcixcTScK5PF6pQlztUT70QMSIdujoTuOUgIHdeV4rsdImc3Hx5O 5vorvnUFt6U+3OVxOe+SIIqMaxjf81/ho+Nayu/HDRnrq+wvtd+OxgPDLbjws/uiln 06iISNdJ3JYpdRUt+pvC/ousFBlNcx1abQ0A9dunZKeDIUlWerbPiwXRYQIu30w2yX gptfVC+LZa0YLeI8sZAdc/2C6TrDc2nraSzZhAHF6E7WJydCTHBkX+TAL7cxpEzgPe vLg9CInwWMrJA== X-Pm-Submission-Id: 4hYSfd6B0Tz2SdHX From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:05 +0200 Subject: [PATCH v7 2/8] 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: <20260831-mma8452-open-drain-v7-2-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=982; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=tzfxlXisttEhbwqNjklxdIHoQtWVVaaErftAi88NK6M=; b=4ZxL69DzkI2RHkWpBcD/Ot2C3VWyIpdquNCkx2UCMWGAkFDbn6WsbGShqxxzCRg9RAe72KVZY VrR64z9xdjSC6QOHKtd7yjlDzstZFyYdDGWLFzYZtrDOGAlAPpUOejs 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 Sat Sep 26 18:55:43 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 9E4ED3F6613; Mon, 31 Aug 2026 12:17:27 +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=1788178656; cv=none; b=GjdNSZ5KVxiXSHsRK05ocfGVRmEICVzFRYHrE183JiwK8kjZz3IuEe9NQfRHY/H7EUIAIb0uzBV4O+JztF5/qIAk4mcwzjufmcjpxE61imKa/tlTXGDTiyz2CiVQ1LlnJcCs4xSd6fUxF+NpPg0CIOdrQwtoTCgJsGK5oBED8Vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178656; c=relaxed/simple; bh=aD1+TxIcp78KfszYueEmzVsPlop8UEkQflASuNmtvRA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uRXdvvMzQ31bQN6xTBB1zNsiML1Z9H0Vzp8dfgdVimA/K5nOSsCx+GsBt4JUy6Yulihvk27c49PvA5Yl+pGoGzidoOnJt5eWJr8RA2Tn6j9pr5p6dcFXnNnayOrSGIKDhsOvVyGBgECLhV13GyF2+BYLIBcPYGg69VtlAUBJTFU= 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=49zG4L22; 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="49zG4L22" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178639; x=1788437839; 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=49zG4L22IfC7dVhThq5AnP2NrzHFhwH+kEJAR4box1zVmzn/XpHTVPElj4MHqz3Je DAA5G2sjn0Nb+URTZZbbVtNQ39UJgGndN8jxm/qH4A7K0X/dQMco2L3GFHWGwFJj5t L3Fz6WMs/yKuSqqgQqDKCJLcB6Kws4MJfXERs4MylvcAWmGZ52ojL+By7b6dyUwY7P nfN5bqomnCb415d1xOSkuOFDLfA2z8k/wU8LXbYN71ByEazxFHgSYT0HU4ZHkuizq0 Axl6s19MI/MjzUVrdoMmlc43xXZ5rga8TVWDfBTP2GSWXP1VRH51CkArgDt0quSqGz ynlO9y88Lwaog== X-Pm-Submission-Id: 4hYSfh5qxyz1DFFp From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:06 +0200 Subject: [PATCH v7 3/8] 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: <20260831-mma8452-open-drain-v7-3-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=1389; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=aD1+TxIcp78KfszYueEmzVsPlop8UEkQflASuNmtvRA=; b=VGVpIIYEqZWiXv48NpOK1UQHXFarekRjQt99Mgr3MaK1Xftp5mrrpzN72xYPHX3FJ0FndBImq OBaafudRkjrC7Bn1QUJsfxU8ST4HHDObDKweLr2cpslq5ymEfS4Qr2b 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 Sat Sep 26 18:55:43 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 83B5E3F7874; Mon, 31 Aug 2026 12:17:29 +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=1788178656; cv=none; b=Twwxq3xu4k7C2+WTC9c/e1cGC4H72NMGhL3tLVwOoOm02E3RwOAshNMMw8attgZFnS0Lyve47a7AUgXx4xXO0f/lZQd5aUl6fNAPmoKFuwtDt3ubzjmumEkdIRVdmlRpoBhGomKljXNCkli4H/Is1n+EsDFCFgvdkSSAp1dub1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178656; c=relaxed/simple; bh=ivalV7xq+83SDttgt0KkvrBI4czA06wqbS9+xpHL4fs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=To7YGn9RVlx4T8tViAh4CDJDabjI8OUgBP6OTqSpC0YWelbVBaZDo6/bxYDdk482bKGD+SQuzXbacj6Jtfn9jh00OWPyNVt3c82HM1+58/HNt6iZG5teTAZ1IRiRtwYsIZeCBfpOIpPUt4eKdbD69C1OMWBviy52XP0vUGHt19s= 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=4h7SxkQe; 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="4h7SxkQe" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178640; x=1788437840; bh=xsC7Az1eah/Es1xBr145VpfMxqMnIU2ojUqM4i1S/nw=; 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=4h7SxkQemJGdgQ/sofYHy4IanrQxB0oUdHp91Z/XTy3WFTN4xPhz9jJEGKWrL4C/u 6zayp3iE7XFPmUfHfIs8SE/vOkn7rTCI22QC8WgQbmaoS7tIi2+EtgypevIrjFmT8B dqKqXXW5nQx+jgA5Ol4p70wzHPpIU4L2yuut6FVdKISuucBv0/Rpo+gIK09HXEfQiu D/Wrq3xLjgbhyKIJZljtoc8t6gj3ddR3eJNGegH8DVwngnOieaPvHF4T48IgVU5HJs QmtNioOU6ClnPrFwdv/Cf7xqrxRm5lw26q5mr510YOlg9h2jPbEGESP+kWzla+oPlE Kjwq14Ma1CRTA== X-Pm-Submission-Id: 4hYSfl2tX3z1DFFv From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:07 +0200 Subject: [PATCH v7 4/8] 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: <20260831-mma8452-open-drain-v7-4-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=3637; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=ivalV7xq+83SDttgt0KkvrBI4czA06wqbS9+xpHL4fs=; b=SFfEKEnJ48ryblHmnrm/FIf68jf6KoCrk8LnvdUiHLsXnZ40ytuGwDQveX5IhL82ZOUVBBBrU KOnOucUkVYECatqzfcchMcxyLC72C4OSg1jDmLWgl+dcZ8jGeegTsHJ 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 | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 1fb43c5b0b72..936eeb2efb2d 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) @@ -1762,7 +1777,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 @@ -1774,6 +1790,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 +1828,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 +1844,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 Sat Sep 26 18:55:43 2026 Received: from mail-106112.protonmail.ch (mail-106112.protonmail.ch [79.135.106.112]) (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 224B53F54C6 for ; Mon, 31 Aug 2026 12:17:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178649; cv=none; b=OS8eOn+/RhGEwr9usX2q3HQMQaSzs6w1G4tJap0To0IeT7ksHaAaJC54hDiekra+mOtgA+LxPQIW7bOTNFpLQOHsTB48ZAi9G2rb6q/eurVwJB0Bt728r1It8qtbbVrM3mKjLjH3D1ODjOV7OTKEUN4cgLiRpzqXjhXRE5Ys2+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178649; c=relaxed/simple; bh=hZw9obe3nthRbPAPqrrWPrJ8rTI3POsteBLsAliD4Z8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cUwKJOChsGdWTH+1IxU8Seu/HhpFZpUzZioMJDUYnpMeYFHiN3WCByu5y5vTgnjrTiwVZo9+DItzHnjPBQK9dAArlMPRdnkyrqu2x/UHlhLK75JLq0opgye781lPJckScDpxY+2py3CGdy/RB1p/Onyk2o9qBpAx9kd2/cWagdY= 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=0DvQu0aZ; arc=none smtp.client-ip=79.135.106.112 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="0DvQu0aZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178643; x=1788437843; bh=4LxYhhz3DNXFvpjt11E18Eq/L5WwfIqXKDX+l4mFsfk=; 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=0DvQu0aZuhWzCSSR2G82ktUqps3NtPEH+pu2g9Ye9X85oTcm5CUBTg+JwIyZzfcep Nxw3xjdmjq7z+Jlazm1p3ulvPsCRQH1tAUnm2oG/4pob7Nxcqms+tzYR1P4dUGyfeR MigHEBbQxOo5xUHBa1VKO0Afxk6qIIrPpnDOvntrgcKEVzmeSX25RU3VuMDiVM4voN H9F5dA0vMJYBBX5vk0dZU9fo0zVjBrN440l53yeCSLU19CuOvaAQQwUlbWIlug0QHW ldAotGwO005NRn0Z9si/+3sFILtJd3RdggCkhldFMj03n4DRbxgQsZGBO0jnhgX/JW xKIv1+DqW73HQ== X-Pm-Submission-Id: 4hYSfn2s76z1DFFC From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:08 +0200 Subject: [PATCH v7 5/8] 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: <20260831-mma8452-open-drain-v7-5-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=2409; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=hZw9obe3nthRbPAPqrrWPrJ8rTI3POsteBLsAliD4Z8=; b=udTDqY6KOS/UBpULb4ZoN8sfYdszDqmAvnExBMUNVOzbmBmK11syFGykfVadKv8anoeQOLQJm IrttwtO0pmhA5DqmjFfaZZgjEDFiRel8vi4wQW0YUhWfLPUQm3sSKAV 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 936eeb2efb2d..2ba6e2c44cb9 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 @@ -1830,6 +1854,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 Sat Sep 26 18:55:43 2026 Received: from mail-43170.protonmail.ch (mail-43170.protonmail.ch [185.70.43.170]) (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 A959A3F6C22 for ; Mon, 31 Aug 2026 12:17:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178654; cv=none; b=fWT/4F+nBsaz2YsZN9J0c9pkR1hvTfJWveyTYWTiaGizPMIEua1sEdruWQ1B1zcrw+Kcgv8Sb4gr9T6w0/2Dn9q8lSTkG4YfQBosYTCtKJeEjBqlHAqomqIEKQsx1FreJQ6END78A1VdMTTnhmx2VIUEJl/oMpvtclms2rm/liM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178654; c=relaxed/simple; bh=34Br3bh4ES15KWd8ZuqEaj+uBXJutTdfjD/RifG+LSA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nausaw0eBeQ08pcUY6E+aJpXdKLNuLCQsPGmuuTr9Vjc4gvs9iapveGkExlDd04e3PiAoa5dHG2QI8wTha042W5q4kFpBPyaoGFtecEYmXW/KryiMN96GZkQ3OS3gej13gVNhsCYduqlW2uZSK3Kb7pTnCavPdK/EjLfm1n7eeU= 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=BxGOxzDi; arc=none smtp.client-ip=185.70.43.170 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="BxGOxzDi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178645; x=1788437845; bh=YxvbCdJglJ60chOji4ihckHLdAxqWh2Hg3ol4lFeN4E=; 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=BxGOxzDiJSCvaH3OYuctoX0gbqxvArS5+pdAc7CwR0vJhbflhpbMSjdElRAhD90DC pJtGFT8y5+lA61AC+FverMm3nwuZ9UyAQEi7njXerfbr5eJdiAK/Q1KdX1y+Z79rL1 mCYa4BNlJv4s+AmCdN6zL148AZx+m8InBn+6csF1V4kgO7pCB+4HYOZVr1P9q5pKLc 8IaFPY9kvFYsJT66R3qJxw86ukQOwKxwITTs0IMgkVSwConR12zZepIiPaZM7gBsJW ESHF3os65oj/hGBTFlXGwfrU2Dl/N65GTSoaHKqdx8OE749HpYLWz/XzOB7VOwF2WK NFRlg36q0RvjQ== X-Pm-Submission-Id: 4hYSfq3bdkz1DFFv From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:09 +0200 Subject: [PATCH v7 6/8] 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: <20260831-mma8452-open-drain-v7-6-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=4085; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=34Br3bh4ES15KWd8ZuqEaj+uBXJutTdfjD/RifG+LSA=; b=l1OYfqKXSAz8przx9oJ+ZHD5BiPXhxmCjtzWhOb7PROI6wDqp9M3+fShvlgZXyHpfC4qToTs+ ovCvlPB6xlpC2UIO0a/oCwVBrXrwSQpFicPUZJ1uMJtW89ynIiIkTIC 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 Reviewed-by: Andy Shevchenko --- drivers/iio/accel/mma8452.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 2ba6e2c44cb9..bf56ebd6e091 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) @@ -1810,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(dev, "powering off device failed\n"); return -EAGAIN; } =20 --=20 2.55.0 From nobody Sat Sep 26 18:55:43 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 83C403F7875; Mon, 31 Aug 2026 12:17:29 +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=1788178655; cv=none; b=o7Ps4lOgZoLdlb1LKUwokWoFZReFDO8UHVMKO9mdnTSeD6TKmqTICvLlukUsBoF5s4jy630mwwOGnNW2Cou1oYJ5V5ner+bETS5eum4bDn2gR4y5agvS1uQt1harnUV1svd1MF+BYzH4rZUrQNn6cOnuAHEHxU1kKVIH7hlMAho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178655; c=relaxed/simple; bh=CS53ZPElD2pCg3MB4FFjE1OQDuKtvLdjWU48Z8ZzjXU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dInx/1SavK6lOAt7Q9H9ZdJP/JK0u/kI6dQRUFak9kxc2BmJsdkvNNjGsNBWexNbq9RA44H9+Bz1aVyKGthCUZy+cl50ALt9flahRDt201AFEgSr8VJjB7q1Ss5nytEnCxaiyuiCggwYqKsmVXPAy5zTta3DIQdIm3KyLMVb7mY= 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=qVczcVvh; 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="qVczcVvh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178647; x=1788437847; bh=p9myFx9OVWkclsSuoFjNAFjmqmthOR41LTlOtA/N7Yc=; 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=qVczcVvhJpcV/AVO5xk9FqqnLsAvTb5m0PQMGlfd49k81XFqSXzBfix+Zq4b2U4CF f6gZ4Flvn7NW8VPISpN3JTLbYZwHvnXMvor7/upO/NDYpTqiDYrmN/Winip3ndFfeH utNmebgzbqLbt9WQGcAJw0RWwbSH6gUUID43aw7bXPBNB/4K0gl7QKhKgXX+subo7d BcoDKsFFj+kzDI5f2WRRzdWJrhtt0LTLjH54YxbG6IyQMrvW2L9AqU0ifp0WimYtAk CFDoeyNKI/n+hNCbAYqVBlF1ReMNLJ05HNwfkh+uPjkQUZGejzgOuAcBLBV3SZnqjp O0I59/T2AnV3g== X-Pm-Submission-Id: 4hYSfs6QCmz1DF6s From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:10 +0200 Subject: [PATCH v7 7/8] 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: <20260831-mma8452-open-drain-v7-7-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=1149; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=CS53ZPElD2pCg3MB4FFjE1OQDuKtvLdjWU48Z8ZzjXU=; b=/b/04Cv24bEp1TyXOi6gF+r+ikAX4njrf37TsPrFcKerP4W8hKhbgwN1RCKYWXSL2ZFLwdkyD wG9QDTF8OvpDi6ugJykJjCSdQ97T0+E6UaHIoupzBbulY7LNVqOeuzp 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 Reviewed-by: Joshua Crofts --- 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 bf56ebd6e091..9619b200fa5a 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1745,7 +1745,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) @@ -1756,6 +1756,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 Sat Sep 26 18:55:43 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 3F7573F6618 for ; Mon, 31 Aug 2026 12:17:32 +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=1788178663; cv=none; b=ddy83NCBHdhqiAbHVucN7/nuVL9ajZllCIZ22NvZFQNIlL3Z3l+yYkyRT90j2TzysxH+tRWm+7ykkyV3Mw4eQyzU/DYhuWw7VaQnTG0dlqQeWCMexvOlF8voWP/6x/CNfXhr7vNJRcan7WPkQq0+ZoRhxnFYy1aMo7adntBWPgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788178663; c=relaxed/simple; bh=AWHYlcyimQjHCbUfTxECGxpmKTdCKYrmlVvAMK6JI38=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ooWdij+QuV58lE0vFKiZihK8+4GerVJ4fQ/dbhjMouxJElLrTQlNjLtdEhxADygqQ9LthQxP/fbqIR8x6qAIAL7eSrQfS+j9rFgFOV3fJ79kjJLyZsFhHyO38PLMLSXrZpcukCrTD+uq5GvvqpPvDGUDFG4Vn/PTE15SA3EjA0o= 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=dHg7kXyI; 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="dHg7kXyI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1788178649; x=1788437849; bh=OwE8NpkZGz+F7fv34BezQkEN0ja6obEPsXaNt76y2dY=; 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=dHg7kXyITQma/muVpSjmmdWdfPD6ZNq38YENY5rbQy+1AP6F3L9IxASt1pCnVIYUz Cw6dWYUn7ndwY/16GvZMQTMEpiBEhNg+SXXE42HSmGhge319KahDGJi+QIgXNRfT1r 0a8nRN1tR25ep1LfayFskBhSE1BnO/89je4764jIj5XPPFxKmH776I0s1QvKrsAisj uZJ5qf0vnz95VroSdwmDBMpW9p+0ngZQ+IrMPd0ko/aO7zc0bmv+r2lKEKh1Ql3v6E hA2ZqE6iAptnHpUxdCTrlJjp4+YxMRT+rD17RkA5SK2WwRvDIB10QQc741fD+5f6Ak 5gZSGYKPKVaig== X-Pm-Submission-Id: 4hYSfw1kyCz1DFG1 From: Esben Haabendal Date: Mon, 31 Aug 2026 14:17:11 +0200 Subject: [PATCH v7 8/8] 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: <20260831-mma8452-open-drain-v7-8-22946812c928@geanix.com> References: <20260831-mma8452-open-drain-v7-0-22946812c928@geanix.com> In-Reply-To: <20260831-mma8452-open-drain-v7-0-22946812c928@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=1788178627; l=855; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=AWHYlcyimQjHCbUfTxECGxpmKTdCKYrmlVvAMK6JI38=; b=KKwueta5sttswppcOEXFm1pzYgb0Ihn9jIW5JhYGZt7GRVeUGdN9DwlIJGpXE1CuBqzBHXYZR IjCc/9N/ZkIBRijIK56qHyGyuxrDjqQVY85SSvywa1+ATmTrRQ9EHnS X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Switch -ENODEV error on i2c_get_match_data() failure to -ENODATA to satisfy the IIO coding style. Reviewed-by: Joshua Crofts Signed-off-by: Esben Haabendal Reviewed-by: Andy Shevchenko --- 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 9619b200fa5a..9eaced6bf242 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1597,7 +1597,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