From nobody Tue Sep 29 04:13:42 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 9D085432E8D for ; Wed, 12 Aug 2026 14:30:54 +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=1786545062; cv=none; b=Gfa5TAzjDGjnpfRTEL/YVOQ+8H/SMjqlwlqV6Z3a+vTk4U2fEMQwpH5ve8auJsuf6xutx65gMKlc96Y2d7Rptm7rX2lcpk/fNzgstdJ2nsQbVyXpqqnKclp3Ngfg3dKgXAp2t3VjOEmsGuZn/P+Qfp/zUMzoCuF9yD7+xEqZ4RQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545062; c=relaxed/simple; bh=Vy2kFGWf40LZZu/OrRKxOp27EqZPY3iYxkaZKLnSAbQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vy6lCwOGYuAzte0Ejmjq4tQfYCRIeKeR+L0xwOiGFeLCJIKCnEX+vMsrXLhkf+bZb/Zu6+raBLZADZL6aBZLDYsidW1FIWyCoovlaziXOUJth8weQtF48ZbEHMcLyi24KJnmbvBBs5q/C7FGBCZKDPxoHvjRZHtrTytUqN2FnLE= 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=IxRySKpC; 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="IxRySKpC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1786545048; x=1786804248; 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=IxRySKpCbJQ2G+7jOGeEm+8nBRWEcUaYAT1t9EC2hZTnLHBetgZADEhCXs5FavugA QwogtPmiorj6TY4tRyByFQR/URHQgZAYCu5reXoBUEmTmxjcfICpF1QhX8TRBHTIES HLH7A3WleR4hkPGJ8Xdogj7eMbs1+UeKMAqrdIcUIAmtWoAUBCQq/hZDpYW98HUNUb CH5bNr4UN9NlHm7rO2QTAAzoGA+jicu4kSBXY3oNgjXq04bc3Saox5HMgEicC/2JCo EdhvDpUWiBKaIjJYMMQc2XuR4b/w+E48DejUTvUahGDCJr7m9KhQ8LB5xJE2a6zDlX VgOZYqDEvWygg== X-Pm-Submission-Id: 4hKrWS3nB9z1DDs4 From: Esben Haabendal Date: Wed, 12 Aug 2026 16:30:32 +0200 Subject: [PATCH v4 1/6] 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: <20260812-mma8452-open-drain-v4-1-bfca15d02b59@geanix.com> References: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@geanix.com> In-Reply-To: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@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 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=1786545039; l=1037; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=Vy2kFGWf40LZZu/OrRKxOp27EqZPY3iYxkaZKLnSAbQ=; b=bOvti1R9EE6QzjIpsHKFDKTfaR5Or9UJi5wEZPsTnQLNvYobzNFiuAP4Lx1xo/CfF6uBQm/a8 A/wimolQ6PgCa4JmJkD6SJWaX+aT+77tOqYNYn0NFDDpQghTvbgH4AX 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 Tue Sep 29 04:13:42 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 2FBC7430CD3 for ; Wed, 12 Aug 2026 14:30:58 +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=1786545069; cv=none; b=MWdt5s+MsteAKFvXHDxPO7f4lSKbXF3RMA6SKpVud7N2V095uc4nZM8cUXTIGJMUIGZgKA3K6LwSsr2DJbkOmK7uANJi8ixblxl5k0ENYZl66fZmo+bVygSP5E+vPIntduapFsbwrcKikIsH8xtc4heEdgJ0VC4sLHFMq9oI8is= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545069; c=relaxed/simple; bh=tzfxlXisttEhbwqNjklxdIHoQtWVVaaErftAi88NK6M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=utHm1OCdRBa6AyEp0UtpvT3Nc8227/MjXeD1rVvCzmrhTN0wKzAsA8/uYZb9bSpbD4wFeHwFiplp3cEGinIvG/ujxAk+37uyg4c5QfCD39dmaNr/MCTRx47rDnCDZpivWVqHFrlmDFclNvjU7SCkjrRqqaAWhvIS8swaKxvtFxU= 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=sjTuthNM; 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="sjTuthNM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1786545050; x=1786804250; 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=sjTuthNM1upNX1ST2lG75KmGa4Jpd+L+GZ+stZwv7MZJVvwwnZcSm84AmGaH6weMc qHzPx/Lvv4+3p/yjngj7WeJ0NAnSUoo0S/dftjGGZWl8ZKvEUuhH000cWEFmRM74Jp 35AVR6AAyAUxO4sqkr8iT9XLWDxgh/qcNQ/P4UvajdHRkuaqTXBuR2RteJds7asgCX scdMQVHQxzmN8KqYo4b/mYdMH7hNDgpjM0MpFdHLrauggu023A+zlyFc8rn46S4Vz3 vhgmdo4JNjxx7Ymg77YXd30GdZhNfhwqy8PmikMI4Y3CrsmtOfjYuyp3AACwsby7EP vkDxzmuMnoESg== X-Pm-Submission-Id: 4hKrWY00zGz2Sd2n From: Esben Haabendal Date: Wed, 12 Aug 2026 16:30:33 +0200 Subject: [PATCH v4 2/6] iio: accel: mma8452: Optimize struct mm8452_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: <20260812-mma8452-open-drain-v4-2-bfca15d02b59@geanix.com> References: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@geanix.com> In-Reply-To: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@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 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=1786545039; l=982; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=tzfxlXisttEhbwqNjklxdIHoQtWVVaaErftAi88NK6M=; b=zyRfIA/5/E3+gLwpDcATtpEZwkeHneIpnlXGSWJUvb6Db0g0uG4k+/i0C4KufOY+7rCQZFmPt Ee7mqrHbPYuAyfM+ro1X59U90Vv9BlLro9xmvNGG+J5aFYEvhSxCYMN 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 Tue Sep 29 04:13:42 2026 Received: from mail-43171.protonmail.ch (mail-43171.protonmail.ch [185.70.43.171]) (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 E7CD13C4B71; Wed, 12 Aug 2026 14:30:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545068; cv=none; b=sXnXKYL4a4CFlBRPpWp57LA2lFLl/zngOiVJUMkCIqAtc2LjS3Tn2yug966pikE794LErZk7ymIredTlGbQHxBbT/j/hG+UIl/2FduMIoxcBAn/2hqb78YlQLxgQ/YkDW/uzjO4/5FvftKF/gwed7OjSKycCbkA587w7Ll7oTfE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545068; c=relaxed/simple; bh=aD1+TxIcp78KfszYueEmzVsPlop8UEkQflASuNmtvRA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FJyDu6tOXAkI+kqc1/1yu+DTNKuFSXCU/TKJLaXYrVtd9R9NBCrMb4C8pY3SQqOyc6n6hTePVWQ+c+tB5kLehnyl1Pem73GNQG6BtsLh1r05vHY0vtpRDgAi6RkbjH9kmpxPyeByztfzz8PIf1BUlHg+1cvAAnG9UaIdIvUT16Y= 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=yRW6IOqj; arc=none smtp.client-ip=185.70.43.171 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="yRW6IOqj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1786545053; x=1786804253; 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=yRW6IOqjTNs4UWftQA9Z60Tlsna1h5jrExISnrqHoYuE6kJ2y0BFwMoD+UYsGXyrm nsJ/9Whyfi7cKJGM9gvQkCh7V7iNMu7FDGvQ0TpBmm3y45v2EyuJsxXwenVXVAX/9c W1Xkn5187HzwmI0A1tTI20p83bqMFNtHkJiIxL/LyL0KSbS5UXKmSvRVy2CDYJn9Vn hBGUJhe1xlJp12cKYr6s8bkwSqkZKSMOWncjldHkZf8MF4yZdmW3IiDgVtM+VyNG22 UK+JPUtQ+ZdwDW4JO6v1mK92iu6/P28uDfPzcb2GtBK4Vqza3E7YKjY8z527IcAqaQ qH0khcCxSEKBQ== X-Pm-Submission-Id: 4hKrWZ743Mz2Sd3Q From: Esben Haabendal Date: Wed, 12 Aug 2026 16:30:34 +0200 Subject: [PATCH v4 3/6] 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: <20260812-mma8452-open-drain-v4-3-bfca15d02b59@geanix.com> References: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@geanix.com> In-Reply-To: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@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 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=1786545039; l=1389; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=aD1+TxIcp78KfszYueEmzVsPlop8UEkQflASuNmtvRA=; b=plvrepN09F9TqWMA1j7OeVwpGJ9fiMRX1/jeNkfWhmsBEFfF2SHhL9rTQo+jovZwgxVGcSNVe 5Hah3U6RWmyBfM8w3SDGErX8oSNza+pwfingcD1VkFyMI1cKNWFVVaR 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 Tue Sep 29 04:13:42 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 1CAF5377EBC; Wed, 12 Aug 2026 14:31:02 +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=1786545079; cv=none; b=AaRYlNQnDavhm3jcpEssDdntVrciuIap35nPch7x0jvpNEsVnq/Dhle2C3lmGBUW1XHV2vB66fOejf1yAelj7r9Y0tEKBUjohY11Lic8UD6qUblwjc4M2Stz0u2gjB0zCaz+aPvlQeYU5zwciuCC1c/qrpeWVRhBpuYb/AzfIR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545079; c=relaxed/simple; bh=zGSxhcoGy7rvndMA3KhI4poiLIO4W4hPtCuAZfoVNGE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=INKITYJqh5WGJ7wrgCe/tvZnmePTrbRes2h3sVY6K9OlwxZB2uYG+6pvXmEQmLWFIg+UgfPCH0dO9wkTK2f8lvh/PfSpiC1Karf5TMSQC612pEGD4ZP53noKfl415hW2ZQa6q3JxwiqdHnXl8IdE18zEhYE/jkGPP4nyNgHyKpo= 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=n8RsRsJY; 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="n8RsRsJY" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1786545055; x=1786804255; bh=PVcPNHsYd8zoUj9Px+aFfUNm7RUu8fGQewTpTDJazmg=; 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=n8RsRsJYqm06TvHtv/H5qjTh4+11XUE75mcTTpnmcxcPn1Y35Y0MM5l4Ay3jMcW1a Usu0niCUayKt5jyv7YgmVI3ER40RTFWGSo9y+Pxs6DXKV0hldZJn3gtioJIcAzV0h+ Ad24WBwd1Sp833MeHaRT4Q8EJkeHme1vQh+3NCnRrNSxUEvoVlJcwybAysArZUwviA Q0hzsOTvuWGcrpaIKNKploNlM0P/PkfyVmiyuoNkw/Wcw0y47HOGB4zdGxRHG2Lke4 K6yKnWEY/Ok3rYAsMORpgWd8jFVJuBEDA37vQtLy5Vnv4v1+BUY0704ppYAgoWN7B6 1XViS3FHCuDfA== X-Pm-Submission-Id: 4hKrWf1zffz2Sd3n From: Esben Haabendal Date: Wed, 12 Aug 2026 16:30:35 +0200 Subject: [PATCH v4 4/6] 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: <20260812-mma8452-open-drain-v4-4-bfca15d02b59@geanix.com> References: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@geanix.com> In-Reply-To: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@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 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=1786545039; l=1909; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=zGSxhcoGy7rvndMA3KhI4poiLIO4W4hPtCuAZfoVNGE=; b=RB+ZIEwhMq4Pv7X2BjjoM+GTn3xaXxhbIP/wYsFI5I3qHw3Lr54WYNBdrAh0YBPm2Aas/FYtX cCUnrgn0wY6BZ+tZT80kpWknYSKmr8eV2Smtj3OIjRyrk6OnfHNbLiO 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. Signed-off-by: Esben Haabendal Reviewed-by: Andy Shevchenko --- drivers/iio/accel/mma8452.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 1fb43c5b0b72..106cdd904dbf 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1056,14 +1056,19 @@ 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 */ + src =3D i2c_smbus_read_byte_data(data->client, MMA8452_INT_SRC); if (src < 0) - return IRQ_NONE; + goto out; =20 if (!(src & (data->chip_info->enabled_events | MMA8452_INT_DRDY))) - return IRQ_NONE; + goto out; =20 if (src & MMA8452_INT_DRDY) { iio_trigger_poll_nested(indio_dev->trig); @@ -1089,6 +1094,10 @@ static irqreturn_t mma8452_interrupt(int irq, void *= p) ret =3D IRQ_HANDLED; } =20 +out: + if (pm_status > 0) + pm_runtime_put_autosuspend(&data->client->dev); + return ret; } =20 @@ -1690,7 +1699,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) --=20 2.55.0 From nobody Tue Sep 29 04:13:42 2026 Received: from mail-43171.protonmail.ch (mail-43171.protonmail.ch [185.70.43.171]) (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 9498443B4B5 for ; Wed, 12 Aug 2026 14:31:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.70.43.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545072; cv=none; b=HLPWCtYKd4GSCfU6D/ebngrmO4OGBk0Zdovy/lYaRcmQUFK5yyFZ3JLWp/m6O22FjbNfLCeOkXaXObG+ztMXCZOY2MRxFMl5PDmQOrVByTYnq/Al1caTAV7Dah19jjgnKkP/dUXSSd7eyk/j8pST4nI2wKFk6Y9TahBi1BGfW6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545072; c=relaxed/simple; bh=XAB19KdSyMK9mt+Rw2Vp72Vjf2WnClhTTZqjRvwz4C0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nHhEr5WhKV4bHfSw2avgg3UuQnEZHUq+g2uSackeFhKZ4d7ogkCARtjdSDIMqc4rm7aSnGDNvwE0cxiCjDssXJCfxfw48FlEQ7i2NirPXYmHdZ7ifpqJY6n9zvifFtMwDDFSDoshPp0cpR2aIGCtMDHX7Wbq9c4oKKd5sVxdZFM= 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=SqS84QYj; arc=none smtp.client-ip=185.70.43.171 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="SqS84QYj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1786545058; x=1786804258; bh=QtCx8kB4Mb3iMCCv5WhZU671IVumwe5Ul6ivPOF137Q=; 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=SqS84QYj7RfOGuQYWhwPmumdRbqQ4bjc7QWNHiR0dLjrgPH7woK1J1WTwb7K7lPAh 75RivjZvIkXgDtl4NWjMANc5LUcKt/04PKPqt8bFBB+E4tsLDRcY9L7wknR2EBMwIF oGjh0TWZu2yq90RoYiKvLNY17z75goSmhQTTJgXpFW7LB9Yt/zlliQkyQtpyrIUFKA bzgbgAlM/BmOMacnu1WXUjoE2wjgYSeGAkWlxwvOOttwk+Oe/Lr6QnBHRjLeA9PqAp LgF9ANtr+LguagehgraGEdmTeXMMQX6PC8yULsmGYobuELm4wgc/gjethtZDuZjkhH /vMl577AiNS3w== X-Pm-Submission-Id: 4hKrWh3vcvz2Sd3M From: Esben Haabendal Date: Wed, 12 Aug 2026 16:30:36 +0200 Subject: [PATCH v4 5/6] 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: <20260812-mma8452-open-drain-v4-5-bfca15d02b59@geanix.com> References: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@geanix.com> In-Reply-To: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@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 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=1786545039; l=2387; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=XAB19KdSyMK9mt+Rw2Vp72Vjf2WnClhTTZqjRvwz4C0=; b=eK4jpnBI5+okCdCApB12SWhUorIDm+PahZpu/J8VdFBlBNxEa8qSslkWS3wvKKVy7Hdn2NIVB vcRgmt/JhjmDV9lGYJJ5iqMDgi62WM6F69KRZnuhGXOIN+jIsEkKvMs 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 106cdd904dbf..7992f9e38818 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 @@ -119,6 +121,7 @@ struct mma8452_data { int sleep_val; u8 ctrl_reg1; u8 data_cfg; + bool open_drain; }; =20 /** @@ -647,6 +650,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) { @@ -1676,6 +1695,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 @@ -1817,6 +1841,10 @@ static int mma8452_runtime_resume(struct device *dev) return ret; } =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 Tue Sep 29 04:13:42 2026 Received: from mail-244107.protonmail.ch (mail-244107.protonmail.ch [109.224.244.107]) (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 C7D2F459AFC; Wed, 12 Aug 2026 14:31:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.107 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545076; cv=none; b=mz45VOYMILrN5KRlUL8/7gI5mVYOYcbLj1ObBTruZ4eSiXSF1ESQ+L9y1/iFAlYGCerCY2QNz2ZikHfZkHiUe2OuzpgRypDA6oTLt+TVw6uk3nWYVpXs93jdp/AqgSHAMSSGiD/N52Cx52/Iwl+wSOS8A39HJ0NdZhWiynV1dhs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786545076; c=relaxed/simple; bh=gPR2ObyQvW8OM8BSHrpHDJoOtSHCtpa4ZLA4WD4+Opc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LOPzl0NsEiL3mnRlV7fR+iITiXfvCSIA7XFI5w7EOYkrxIaiVoqjuOdV36FCJT+5gKSjSyR8Yys+CrliUXUeEJJv1hpJnIvVv29dPozBZN+6uKG/qKd4oqxZlIBpxRoTOXINkKVkE6g2dujDuUDy618zUx9Ie7YyUqTQSfZvA9w= 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=LtyIKTsN; arc=none smtp.client-ip=109.224.244.107 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="LtyIKTsN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1786545061; x=1786804261; bh=KslHpslC7vJccQ/CYVv8G91Fsus5PafzrnbdiE2LXTU=; 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=LtyIKTsNdAIyUEapyh2kZt1INU7I69khHgY7sqzSvuyFXBj3R0tMjwjv5zVwVDRpl 5Y09X/guwGd+i/cOeqkBs/hikPE+HrOB8NGrE+POcohk9IuFZ9BOvv0S7Vd/ltZgAC AlHhA/Az3UzMnjVN0QPtg2lku1YD53+2fWE1zNcvIu0LeNJ2AIxiNoNZyCDpSD/70a 45O55nau1fuGTq3SqcUgqnwco+JVdNMQryXfgEvB89z83yGCJvJjbxHWwSvwvFJ/zR OkLdmJY+lnpFVLdg9vhQYjSFu7aXh53OBviKYJtbRXIv8G6UgPcByv2O6rZQenIgj2 YJWxMjxdqSMOw== X-Pm-Submission-Id: 4hKrWl3RPBz2Sd2n From: Esben Haabendal Date: Wed, 12 Aug 2026 16:30:37 +0200 Subject: [PATCH v4 6/6] 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: <20260812-mma8452-open-drain-v4-6-bfca15d02b59@geanix.com> References: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@geanix.com> In-Reply-To: <20260812-mma8452-open-drain-v4-0-bfca15d02b59@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 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=1786545039; l=3699; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=gPR2ObyQvW8OM8BSHrpHDJoOtSHCtpa4ZLA4WD4+Opc=; b=THRC8avmJtducuhc3V7bjLxXAdmKDUhY+YGegyNjBkj/WQ17W1UOT3LO1L7adVI7Nh84v/qrI ilsF0p/2/WWDDRryNM9fUHA/ij9X+/kTpGTywiUpwxMreH54f0CdYmK 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. Signed-off-by: Esben Haabendal --- drivers/iio/accel/mma8452.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 7992f9e38818..2fbf9f9ed9d7 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1581,7 +1581,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 @@ -1591,21 +1591,21 @@ 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, + 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); @@ -1637,7 +1637,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); @@ -1670,10 +1670,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, @@ -1681,7 +1681,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, @@ -1730,14 +1730,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) --=20 2.55.0