From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 6C1BF2F28EB; Sat, 13 Sep 2025 15:40:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778014; cv=none; b=LELIFzdVbOpc4yVCLru2k6TM2pXq/F7aRd5CJUoonobMzekl/I6Gw5O3plB9gfyEqU/Zz6vtMaZQQl9E5im5G7p5SXF7j1acIEYfnD/rsj04OT50PwZ0JEHXrE0vFOzhPvGrs28VqgSa3Qtb5QYseN1dhUs8Q3s0HPj9CRvoee0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778014; c=relaxed/simple; bh=8H7S7SgW+0FXgD2aRmtUEQVvdaydg9AkOYubDxSsbq4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OPO8StQw+3eu1LX5iIQlpyEScem1Jh6DRH0h+QUiqm70fkTV4/dhw+smrYCqNv8YVf5uyk7tKFCcYMkyM38r0qqOLS4KTWA0OMHaVzrbEv2MRYaeb1jT1vMCGPTISzrAEtRIQW0/3LQwTD5A83VAQiYwd7bYQH8RNsksHUJzLog= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=RnaQfB7K; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="RnaQfB7K" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 9023B173BE9; Sat, 13 Sep 2025 18:40:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778004; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MjtII/gmJYh28rgrlvVUalNP2FHFV2VvBOZDCSeHYTQ=; b=RnaQfB7KegahFMRXWyCGxlwLeSR3DG0m3bWpxrwGoA4QHlHxFBHEg3D0HZjwD5MqY/7YIY rjbIH9U/J8OhGaQ4KNajmTaPahjrP4Ayu1CbmwJlRjToZHK0IijZKeujN/+IQMp0Azbuyg tsT8HZBhxlDQpehzpUah+pbvLrazt6KRNkW7A74OFc51tgYKlBw/Y3sWWKcovBEE+4iNJO 6gJOHbXHP3aHvH1al3aY0QBU7WUrT5XoYgsHcwxTnRzFByMlC/yCEBktrnIwg0Iw9KmaRs tcxgz1N1ncS0uJfEqZ1ohaDQveYj/G7iRviPcCYiE0JsTba3/Hg1UvrGqGK9zw== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:22 +0300 Subject: [PATCH v3 01/18] dt-bindings: iio: accel: bosch,bma220 cleanup typo 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: <20250913-b4-bma220_improvements-v3-1-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1046; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=8H7S7SgW+0FXgD2aRmtUEQVvdaydg9AkOYubDxSsbq4=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBR4A98FQVZerf1AuWYf0F6SYhQ9y9m76Z79 faDx2kSLTuJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUQAKCRDPJpmZhE5/ MG19EACTXR+Tw6oAZ0A7vQz7crHwt9ylpLHZ1VeZt/BxWAwPKCJrUEVmKYfNQKTe4VyCmLcdVwd +sU43XCMVKPV7DJ+xG4c2xrBfe0yYkZNM/E9cXTAjRn4qPHszcCdnRcmltzMIq6p31HVHbG0e5w 1glSmBv0mFkpFnIcnP9tKo78id58lRcDYRi9MB6yADuXIel0EviuNZ2gcddXqPJlJOgEEdbtAxC YkaUhmfd2HNqP6VtwfQevyl8NarKnEoUzZxFljkcgSId6cy7Gu3HrO1bdmqc5JzG0pjjjuge8X9 tmXsUDZzcMdhgwGb7bLVk8QmMZZskEREaVbONzT+31rLyD1tOUt14YZ5I2RMu9Ax4OHy8DWeUpM Yv/hHeScM2LRmuNTyzsv6UN409q2h5qWYzGj8mBeZzidhm4M7vaPHN+VXHt4iwgFWDEmAjhOu00 Kz4981Opty7LapGiTXp427ZJ5woq357MRxCgCcmKG419J4WZMFYvQl8kfAKOmJ9MYVQZx94Wisx HzOvTV0gvlRfrqHrxSyhWnKKcs8fRd496p8sH94cqLHF+nDwWQW+hnbMwle36C9sZ+4MNHxijGV PGIJf4OYLCnfcW93axUm3aRwHl805xbSqxs+Mf8/619QNLEtmsbzwDEYN7Yq2eUULriTBuvU0pp d6ygvEM0Kwwx4Kw== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Cleanup typo present in the title. Acked-by: Krzysztof Kozlowski Signed-off-by: Petre Rodan --- ChangeLog: - split out from a bigger patch file --- Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml = b/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml index ec643de031a34190af1bc2bffee7412ee2d3b902..da047258aca3d84e8b2cbe92a9c= 98309236fe7ae 100644 --- a/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml +++ b/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml @@ -4,7 +4,7 @@ $id: http://devicetree.org/schemas/iio/accel/bosch,bma220.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: Bosch BMA220 Trixial Acceleration Sensor +title: Bosch BMA220 Triaxial Acceleration Sensor =20 maintainers: - Jonathan Cameron --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 6C0D82F1FDD; Sat, 13 Sep 2025 15:40:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778014; cv=none; b=PUQPo80r4FSzhvK/TSod79Tx7MQZgEgLK+w1NUYzhgumxrQvGn3DTB84SwNUEggZJ05smjMfdHJa3mgDT1juQOhDeflMRt3CpJ5WPQx413NfOMnLsOdPv3C+YJFIS8FoBwliE/f92yqeICVp37tX4dmnBXC64/hB5/15A+EiLRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778014; c=relaxed/simple; bh=UhXB8Jz4OnNtNjZZn8F2Vqb9CSRohbbH+vylsGTw560=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PbwyZm7UI4BOAEusRMJNyhUsN2uya+OF/9A2d4e46NoYLidUAKREIA68GNeNSr7UiZa3c8PrRxT/9YE2liLzyDRqiXgLesNVxo+ZJNsHc9Bv/8d8XiJjaH1/fS4cS9t4w1cPcjQxrINaLysIdeE85IbWdc/0HrnJCVF6PebBcPA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=Y629B77i; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="Y629B77i" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 961E0173BEA; Sat, 13 Sep 2025 18:40:04 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778005; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TpR2X75UpYNw0eK3Bd2fyFVQ9sIJPVgjllZR+VdDbDk=; b=Y629B77iLrznPVZG1DKoraI6QFp0N9oNlk3mtUBPdhyI6hdNPsqyPsw/KgUe6bD7UtVEbj 1gcJ9vWunx0NZXaRMoi07emLu19F+aG3HOsQYQ4JyLcC3GJzCVH5MBAYwfN4zUlTAPhpHb glQvL91/SqT3Wz7mp/sZF7WwW3MSXuJexqKUPxjAUr94jWGLuTFIHwklxkVHjOnbfIyi6U ebPerUhNUiFDgDrPvXmJ8fqZLudbuAboGMF/Q1CotyV7SOWvuSSaWtiaOrs8b1d8HKh8IN dD0EMRj/t1J2qY6+q+qxT+funOIXBXXyReTqp8pIbS8GB5Yq4Y5FvkWFRIbvmQ== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:23 +0300 Subject: [PATCH v3 02/18] dt-bindings: iio: accel: bosch,bma220 setup SPI clock mode 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: <20250913-b4-bma220_improvements-v3-2-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1648; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=UhXB8Jz4OnNtNjZZn8F2Vqb9CSRohbbH+vylsGTw560=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBRwP1WJJq3J/J4s+IC43JTo3qi4uppdCMcg U9ThR9wHquJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUQAKCRDPJpmZhE5/ MOvCD/9nZrxZE7ITilVyEE4x4YbjfnSZF9N6kC6hz2UoANATSdjNRtUsDMCQZSXzxMsNz/ddwPP WU6dcgIEVaa4WnJM93JgkMuPE9hKKl3QeLMuC+UmrmeuFsuIU4z0IKBZvexOMx/3K7ngu251kTK MKXl686NpFIz9c4mb/SOATc0Nt7H44LRjmzD+m7PbaRHDCvTlsBxEulushET8V5ItrozFDpOsU6 lf8vMeLX+Bqq3THePhfMTJwaE992/gviG+yMYR8iOxkgBGrbIZQCTwLOT1aYPZ0stElkSKD5K4f /gUExlpYehCPrnd9TfwI6aXRW5bP3/5Ho6TCkho8Fy8ufN0R/APTm9rozhO+SdDQWeIggoU1aHs BNg/dzftSDuClwAqFt0MUOL8woa+zRFG0tCOlA7pK6gOFgXVBXKbR7CKxTDAaUbnWM4Kj7uZt9I 3V2/WxZGTorlDRcfCuxFXN6BSmuQyFZHBL6sQKeeeMd8gLfDnIVIMkNRfsUFxjG2boYaffNAfd3 UyCNjyWFQwuf3HdAFp6/AxtXJXKgWNpGgJp2T+Zdr7kZTX+0DOrU+CzXmSpIxxocwN9+8t+A9Rf vyyKnZO+v4QMsh18pknzfh3lr578PKGKyDh7uskEDNMtHlH/uwMpgIwlwy9FsGRBoGjN+EeGRpZ TVJpaYS14SoiNGA== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Assert CPOL for a high-idle clock signal and CPHA for sampling on the trailing (rising) edge. Quoting from the datasheet: "During the transitions on CSB, SCK must be high. SDI and SDO are driven at the falling edge of SCK and should be captured at the rising edge of SCK." The sensor does not function with the default SPI clock mode. Fixes: 7dbd479425d2 ("dt-bindings:iio:accel:bosch,bma220 device tree bindin= g documentation") Reviewed-by: Krzysztof Kozlowski Signed-off-by: Petre Rodan --- v1->v2 split out from a bigger patch file v2->v3 add fixes tab, just in case (Jonathan) --- Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml = b/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml index da047258aca3d84e8b2cbe92a9c98309236fe7ae..0e27ec74065acca611e63309d6a= e889b8a3134ce 100644 --- a/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml +++ b/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml @@ -20,6 +20,9 @@ properties: interrupts: maxItems: 1 =20 + spi-cpha: true + spi-cpol: true + vdda-supply: true vddd-supply: true vddio-supply: true @@ -44,6 +47,8 @@ examples: compatible =3D "bosch,bma220"; reg =3D <0>; spi-max-frequency =3D <2500000>; + spi-cpol; + spi-cpha; interrupt-parent =3D <&gpio0>; interrupts =3D <0 IRQ_TYPE_LEVEL_HIGH>; }; --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 6C14C2F1FEF; Sat, 13 Sep 2025 15:40:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778014; cv=none; b=TBerhn6YvGEHm2MRczqjXfENWOwEsDCHLLLmDk+gqdR1eXgUbA5w/WN1Rzj/S/A7lT8u1p8h/TZ806Ra92+dRjEmhUG5Hewtpduw0W5QQZlrvJzENMOVJiwkxz57Se1+xHWjVnmA/1fHOf0BWLHOZBNeJ+NQhwrQQ7GpxWp3UZ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778014; c=relaxed/simple; bh=EBNhVOW8hBoqmeWeZW+H82GxsVcMw+E2abP5SetbUuE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gn7aObSuVpFNMEwkljFyfx7dHE3pvQuUMJCNtaA+kBtFwY07MbZgdWIb8TDvBE10qu70/ED2oCHEzF8U0+Unm4cKKxF/hEJVnpNjsnwN2NQNVqT+kwBB8RpxcD5k2BJ0wvtoAvHu5Iwhs/cvo8yI5Rb7wwK96AzKMlq2w8bfslU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=nNtz6+M/; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="nNtz6+M/" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 1E962173BEB; Sat, 13 Sep 2025 18:40:05 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778005; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HdRafdIBJZDMJaY2Ja0JkowRHXTp0cry90yvfDRdsX4=; b=nNtz6+M/gA2wq4Z+VmheNknfPBKB4sIqTWTFjQYBYhhxc/SaUejSg3f9v+N9NdA3bSlbVg WizwP2GnR5FY65aBq6JqFoYgYDhXAvxQ6kUp/apLtBIFxoAoA+t75+gC2YpmzQ4SOIklm/ JuIJ1lVSgwbEf8J4kpi8lWXgVETVtuX4dE30lGZDNj5LIXaMTyIlr6Ck4OuBpsVHDzmEms w3KugByp06By4bbow5oGt7i0xgNh+vpMKo99YMcSN3Z062Wu8WsVwtgKAfRBydr7ayGCrX Ib6VgL5j/9SbamWLaAqlGya4ie5UA7W5qICst9+dPgryj2y9mwhIKobXOTkQ4g== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:24 +0300 Subject: [PATCH v3 03/18] dt-bindings: iio: accel: bosch,bma220 set irq type in example block 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: <20250913-b4-bma220_improvements-v3-3-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1094; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=EBNhVOW8hBoqmeWeZW+H82GxsVcMw+E2abP5SetbUuE=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBRtiIAzJv+T4Ow7l6Wu/0PLqOA4B4xOamB5 LSPnNpopUaJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUQAKCRDPJpmZhE5/ MBy0EADI9uDRc6yD5c6XyGoVrncIff7P+rNP4/klJN4P0/tmWSGOywWYZzrl98ZUHFIpbIO13RW YcvzvIO+dZT8OX1ElRDGLwnC0lKjlo3z442BeBDGXd4H+2/MD5FgqUavt2v3DqEBPSE4LFHrVeW b8g48P2i2B/usNhejdoZmi+RQOdONX4mqc9AuKfgLzomZJ3QJt8eUCD3yZQwZkxs+ecYoThWVM0 HpQEHDXRlTX8xhKfLEgCVIyfFbxYbcs1IPjkx1SiQ49Xgr/9fXlVdNTTuPU+KES/Wx4YNEzoosW 6hSnMPBj8igE8e9TvbEz20BgiwFDsZDd6vcwpKK9lbO33REJ4QpEDJ9rXD+TxFmNJNQuvskCJUg sdgjFNDIm6qtO/IA5/iGF5tEIycc+vFAXu/hQ9V5KZomZdc9BV49I7/vIvHUVk4qYgUU13ncRQC AHQYMa2MfopKft9c+1iIcSial98B38QlPLvASp/PftumAGirkBy/BKbSizS6e1PON4WBIgnVk6T 4b7n8BaPiurAYlq7kQrkHzM6ykZWkVZyhKHYwDr7tCTlrys5NCqYZGRdwbIVpgSYM1p2Vk72alN GnwPvWoVsn++0dGSZMKaUVAvC8si/r8irJrnK/Mi2KIoNafrx9O0HeYD0iuQST8GkYweMUMKnx6 tzYR1HEHdZaLuAA== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Set the interrupt type to rising edge within the example block in order to match the new driver. The entry that got replaced was not in use by the original driver. Signed-off-by: Petre Rodan Acked-by: Krzysztof Kozlowski --- v1->v2 split out from a bigger patch file (Krzysztof) v2->v3 reword commit (Krzysztof) --- Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml = b/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml index 0e27ec74065acca611e63309d6ae889b8a3134ce..8c820c27f781e8001bc14b4ca6a= b1f293bdb18ca 100644 --- a/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml +++ b/Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml @@ -50,7 +50,7 @@ examples: spi-cpol; spi-cpha; interrupt-parent =3D <&gpio0>; - interrupts =3D <0 IRQ_TYPE_LEVEL_HIGH>; + interrupts =3D <0 IRQ_TYPE_EDGE_RISING>; }; }; ... --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 50E5F1A5B9E; Sat, 13 Sep 2025 15:40:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778015; cv=none; b=RUcEUhPk/mli02VD/Th1/GfUXg0K+yB1j0E8XfFBY/zD/3lEO2uTryrvF83muem2KUZudRl2lCSf621EH0tGOWErtGjmXzzNANzWPLBkSMGJRi/4irnaZFrRGM8XKJWvUuwSZWfDejDbOpXCf3CmNUOQTVIFCPkYe3/1YfWxb7Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778015; c=relaxed/simple; bh=ChNDnbsnUaD5lOGs0bZb2KRmd/Y8TTkheIP3ACkZDFg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nCja9QnEQd/fZSKJfibQegQKMtmJint38jtUUhEWgkS4L2ExBP3JrnYBZUaqr839oHX/ir05hE+hYVrhA4T7gEhcbH0HQpt6bTmVw/9wzsW946a9nEHZOwwMAYJw1F/MW0hKkMbEy1WwGmz3eZHTd8CU3ZorfjuScbwfC6voTLc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=jKAozZJO; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="jKAozZJO" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 8E856173BEC; Sat, 13 Sep 2025 18:40:05 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778005; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pHc5xiSOmUO9NfuCfgpno9Tr/1qvtPLKetQwAEi29AQ=; b=jKAozZJOvwONlqO6c2NPZcNEEH0Ud1nBNsdZ+MydZt3Hsy1OAm1kXZWEh4lc/giwviO4d4 mp2L+SQlaCrRNc1NRZaIj3LU8IO0LYgy6J7dDjGFa/wv6QrXlKpthcP1S+J+j+SQKxMc8N Ib0AwFKQ0s+yFVlH8YNmFrMJ/p4i47iAwSKXsXbidHrHKAr6CTpik8RzbJ59YJEGgytXPU 65kbwB2i8DVqJ97xFxk9XRtOCVb0dRG1PSSAKKMAouRRK90eDrlcAk2/AMAtDWRc5KBBqT UXtZReJGxIQgXiGvEbsjWr+mdy7Vv2M3g25Pl+uIkpeXKjEDJE+75f55XwdH7g== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:25 +0300 Subject: [PATCH v3 04/18] iio: accel: bma220: split original driver 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: <20250913-b4-bma220_improvements-v3-4-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=21075; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=ChNDnbsnUaD5lOGs0bZb2KRmd/Y8TTkheIP3ACkZDFg=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBRnzNZ/IqGTQ7Uk4WKZRG0Yhiilu3BwOOg8 ippqOv/y7uJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUQAKCRDPJpmZhE5/ MIc2EACntBMV7knTnTBiDZWsILru921n9Os4e1HPdI9mtGAdil2W9Fsi+tTJjFRA0PzPCyGVEno oEJJB7anDlSSiKEcgkZzzd4BBrZRah5r4ij4E3rL+nWQKHgp1SlQJyB7Fli9FsZ4Pm6amMt+b5Z 3/7cP9MrXpYhhIel3N9Q5oBbKZI79JUcHf9w0usyUqwERqvHPwwSTffLGBfbDJwHWovu8B0rfgj uNLU2ojiLSlwNg86u8ZfqC3pwUSoNAeWg0UHeTvnkAQkv9REpf4nqRlGyXTPPfzWF7wqzmMLAtW ORemT/pVRKTHBG4treeqWR6wgFP14rxVYGvjPdmB3PgIvFyz3fYpNnRFvVmDcHvG7RpYWQ3Sovx 46M4ec0r6vHvcV/YKuMy8XGgdka+DJaw4YlbBPhBp/k9Q5y87T/CvWjhhuu1B84IziFFeZW0n3P OkDbCi2D0pbz4xG2DQwsJXcD6D/RHTCSLDrBvTrDHn+uSfh0ploMDo79MZo6KTnams7ao3menZp lLlFXX3PI4D38SCA2pZlCUs/5avv8qxSEx44IcaoNQ4HmCEukImkm3hGPj9Z/Yh3iq3WBzXWRYH NX+Wpn3YcQDYC+ZqzYgY0RaM0QVSLZn0s1K3TSKNOfzOYD7WrvECqjDMNxxc8oqFUeq1o10C/Vr W46Bo5QdnOHBhSQ== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 In preparation for the i2c module, move the original code into multiple source files without any other functional change. Create the additional bma220_core module which currently is not providing an abstracted bus type (this will change with the regmap patch). Fix checkpatch warning about GPL v2 license in bma220_spi.c. Fix a few includes to make the change functional and prepare for the next patches. Signed-off-by: Petre Rodan --- v1->v2 - split out open firmware table modification into separate patch - bma220_write_raw() exits without dev_err() based on similar feedback from David - change includes in bma220.h (Jonathan) - include bma220.h in bma220_core.c (Jonathan) - add device.h, errno.h, mutex.h and pm.h includes to bma220_core.c - cleanup struct spacing in bma220_spi.c v2->v3 - keep depends on SPI (David) - fix a few includes in bma220_spi.c (Jonathan) - mention new includes in commit body (Jonathan) --- drivers/iio/accel/Kconfig | 8 +- drivers/iio/accel/Makefile | 3 +- drivers/iio/accel/bma220.h | 18 +++ drivers/iio/accel/bma220_core.c | 313 ++++++++++++++++++++++++++++++++++++= ++++ drivers/iio/accel/bma220_spi.c | 307 ++----------------------------------= --- 5 files changed, 353 insertions(+), 296 deletions(-) diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig index 8c3f7cf55d5fa432a4d4662b184a46cd59c3ebca..4648be329917a3054615ed32415= 6d67f53baefb6 100644 --- a/drivers/iio/accel/Kconfig +++ b/drivers/iio/accel/Kconfig @@ -221,12 +221,18 @@ config BMA220 depends on SPI select IIO_BUFFER select IIO_TRIGGERED_BUFFER + select BMA220_SPI if SPI help Say yes here to add support for the Bosch BMA220 triaxial acceleration sensor. =20 To compile this driver as a module, choose M here: the - module will be called bma220_spi. + module will be called bma220_core and you will also get + bma220_spi if SPI is enabled. + +config BMA220_SPI + tristate + depends on BMA220 =20 config BMA400 tristate "Bosch BMA400 3-Axis Accelerometer Driver" diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile index ca8569e25aba31c3ae3437abf8506addbf5edffa..56a9f848f7f913633bc2a628c1a= c5c9190774b9d 100644 --- a/drivers/iio/accel/Makefile +++ b/drivers/iio/accel/Makefile @@ -25,7 +25,8 @@ obj-$(CONFIG_ADXL380) +=3D adxl380.o obj-$(CONFIG_ADXL380_I2C) +=3D adxl380_i2c.o obj-$(CONFIG_ADXL380_SPI) +=3D adxl380_spi.o obj-$(CONFIG_BMA180) +=3D bma180.o -obj-$(CONFIG_BMA220) +=3D bma220_spi.o +obj-$(CONFIG_BMA220) +=3D bma220_core.o +obj-$(CONFIG_BMA220_SPI) +=3D bma220_spi.o obj-$(CONFIG_BMA400) +=3D bma400_core.o obj-$(CONFIG_BMA400_I2C) +=3D bma400_i2c.o obj-$(CONFIG_BMA400_SPI) +=3D bma400_spi.o diff --git a/drivers/iio/accel/bma220.h b/drivers/iio/accel/bma220.h new file mode 100644 index 0000000000000000000000000000000000000000..dea34244b4fc4971841dc60d79d= b6c7db27bea20 --- /dev/null +++ b/drivers/iio/accel/bma220.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Forward declarations needed by the bma220 sources. + * + * Copyright 2025 Petre Rodan + */ + +#ifndef _BMA220_H +#define _BMA220_H + +#include + +extern const struct dev_pm_ops bma220_pm_ops; +struct spi_device; + +int bma220_common_probe(struct spi_device *dev); + +#endif diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c new file mode 100644 index 0000000000000000000000000000000000000000..6bc2e5c3fb6cebd50209acbcc2d= 5340630c27cd1 --- /dev/null +++ b/drivers/iio/accel/bma220_core.c @@ -0,0 +1,313 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * BMA220 Digital triaxial acceleration sensor driver + * + * Copyright (c) 2016,2020 Intel Corporation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "bma220.h" + +#define BMA220_REG_ID 0x00 +#define BMA220_REG_ACCEL_X 0x02 +#define BMA220_REG_ACCEL_Y 0x03 +#define BMA220_REG_ACCEL_Z 0x04 +#define BMA220_REG_RANGE 0x11 +#define BMA220_REG_SUSPEND 0x18 + +#define BMA220_CHIP_ID 0xDD +#define BMA220_READ_MASK BIT(7) +#define BMA220_RANGE_MASK GENMASK(1, 0) +#define BMA220_SUSPEND_SLEEP 0xFF +#define BMA220_SUSPEND_WAKE 0x00 + +#define BMA220_DEVICE_NAME "bma220" + +#define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ + .type =3D IIO_ACCEL, \ + .address =3D reg, \ + .modified =3D 1, \ + .channel2 =3D IIO_MOD_##axis, \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ + .scan_index =3D index, \ + .scan_type =3D { \ + .sign =3D 's', \ + .realbits =3D 6, \ + .storagebits =3D 8, \ + .shift =3D 2, \ + .endianness =3D IIO_CPU, \ + }, \ +} + +enum bma220_axis { + AXIS_X, + AXIS_Y, + AXIS_Z, +}; + +static const int bma220_scale_table[][2] =3D { + {0, 623000}, {1, 248000}, {2, 491000}, {4, 983000}, +}; + +struct bma220_data { + struct spi_device *spi_device; + struct mutex lock; + struct { + s8 chans[3]; + /* Ensure timestamp is naturally aligned. */ + aligned_s64 timestamp; + } scan; + u8 tx_buf[2] __aligned(IIO_DMA_MINALIGN); +}; + +static const struct iio_chan_spec bma220_channels[] =3D { + BMA220_ACCEL_CHANNEL(0, BMA220_REG_ACCEL_X, X), + BMA220_ACCEL_CHANNEL(1, BMA220_REG_ACCEL_Y, Y), + BMA220_ACCEL_CHANNEL(2, BMA220_REG_ACCEL_Z, Z), + IIO_CHAN_SOFT_TIMESTAMP(3), +}; + +static inline int bma220_read_reg(struct spi_device *spi, u8 reg) +{ + return spi_w8r8(spi, reg | BMA220_READ_MASK); +} + +static const unsigned long bma220_accel_scan_masks[] =3D { + BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), + 0 +}; + +static irqreturn_t bma220_trigger_handler(int irq, void *p) +{ + int ret; + struct iio_poll_func *pf =3D p; + struct iio_dev *indio_dev =3D pf->indio_dev; + struct bma220_data *data =3D iio_priv(indio_dev); + struct spi_device *spi =3D data->spi_device; + + mutex_lock(&data->lock); + data->tx_buf[0] =3D BMA220_REG_ACCEL_X | BMA220_READ_MASK; + ret =3D spi_write_then_read(spi, data->tx_buf, 1, &data->scan.chans, + ARRAY_SIZE(bma220_channels) - 1); + if (ret < 0) + goto err; + + iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), + pf->timestamp); +err: + mutex_unlock(&data->lock); + iio_trigger_notify_done(indio_dev->trig); + + return IRQ_HANDLED; +} + +static int bma220_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) +{ + int ret; + u8 range_idx; + struct bma220_data *data =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_RAW: + ret =3D bma220_read_reg(data->spi_device, chan->address); + if (ret < 0) + return -EINVAL; + *val =3D sign_extend32(ret >> chan->scan_type.shift, + chan->scan_type.realbits - 1); + return IIO_VAL_INT; + case IIO_CHAN_INFO_SCALE: + ret =3D bma220_read_reg(data->spi_device, BMA220_REG_RANGE); + if (ret < 0) + return ret; + range_idx =3D ret & BMA220_RANGE_MASK; + *val =3D bma220_scale_table[range_idx][0]; + *val2 =3D bma220_scale_table[range_idx][1]; + return IIO_VAL_INT_PLUS_MICRO; + } + + return -EINVAL; +} + +static int bma220_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int val, int val2, long mask) +{ + int i; + int ret; + int index =3D -1; + struct bma220_data *data =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_SCALE: + for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) + if (val =3D=3D bma220_scale_table[i][0] && + val2 =3D=3D bma220_scale_table[i][1]) { + index =3D i; + break; + } + if (index < 0) + return -EINVAL; + + mutex_lock(&data->lock); + data->tx_buf[0] =3D BMA220_REG_RANGE; + data->tx_buf[1] =3D index; + ret =3D spi_write(data->spi_device, data->tx_buf, + sizeof(data->tx_buf)); + if (ret < 0) + return ret; + mutex_unlock(&data->lock); + + return 0; + } + + return -EINVAL; +} + +static int bma220_read_avail(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + const int **vals, int *type, int *length, + long mask) +{ + switch (mask) { + case IIO_CHAN_INFO_SCALE: + *vals =3D (int *)bma220_scale_table; + *type =3D IIO_VAL_INT_PLUS_MICRO; + *length =3D ARRAY_SIZE(bma220_scale_table) * 2; + return IIO_AVAIL_LIST; + default: + return -EINVAL; + } +} + +static const struct iio_info bma220_info =3D { + .read_raw =3D bma220_read_raw, + .write_raw =3D bma220_write_raw, + .read_avail =3D bma220_read_avail, +}; + +static int bma220_init(struct spi_device *spi) +{ + int ret; + + ret =3D bma220_read_reg(spi, BMA220_REG_ID); + if (ret !=3D BMA220_CHIP_ID) + return -ENODEV; + + /* Make sure the chip is powered on */ + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret =3D=3D BMA220_SUSPEND_WAKE) + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret < 0) + return ret; + if (ret =3D=3D BMA220_SUSPEND_WAKE) + return -EBUSY; + + return 0; +} + +static int bma220_power(struct spi_device *spi, bool up) +{ + int i, ret; + + /** + * The chip can be suspended/woken up by a simple register read. + * So, we need up to 2 register reads of the suspend register + * to make sure that the device is in the desired state. + */ + for (i =3D 0; i < 2; i++) { + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret < 0) + return ret; + + if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) + return 0; + + if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) + return 0; + } + + return -EBUSY; +} + +static void bma220_deinit(void *spi) +{ + bma220_power(spi, false); +} + +int bma220_common_probe(struct spi_device *spi) +{ + int ret; + struct iio_dev *indio_dev; + struct bma220_data *data; + + indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*data)); + if (!indio_dev) + return -ENOMEM; + + data =3D iio_priv(indio_dev); + data->spi_device =3D spi; + mutex_init(&data->lock); + + indio_dev->info =3D &bma220_info; + indio_dev->name =3D BMA220_DEVICE_NAME; + indio_dev->modes =3D INDIO_DIRECT_MODE; + indio_dev->channels =3D bma220_channels; + indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); + indio_dev->available_scan_masks =3D bma220_accel_scan_masks; + + ret =3D bma220_init(data->spi_device); + if (ret) + return ret; + + ret =3D devm_add_action_or_reset(&spi->dev, bma220_deinit, spi); + if (ret) + return ret; + + ret =3D devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, + iio_pollfunc_store_time, + bma220_trigger_handler, NULL); + if (ret < 0) { + dev_err(&spi->dev, "iio triggered buffer setup failed\n"); + return ret; + } + + return devm_iio_device_register(&spi->dev, indio_dev); +} +EXPORT_SYMBOL_NS(bma220_common_probe, "IIO_BOSCH_BMA220"); + +static int bma220_suspend(struct device *dev) +{ + struct spi_device *spi =3D to_spi_device(dev); + + return bma220_power(spi, false); +} + +static int bma220_resume(struct device *dev) +{ + struct spi_device *spi =3D to_spi_device(dev); + + return bma220_power(spi, true); +} +EXPORT_NS_SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resume, + IIO_BOSCH_BMA220); + +MODULE_AUTHOR("Tiberiu Breana "); +MODULE_DESCRIPTION("BMA220 acceleration sensor driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 01592eebf05bb6b002d44c41cca1d2dd5f28350c..3ad5e43aae496d265a8cf198595= bf824f8e73692 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -5,326 +5,45 @@ * Copyright (c) 2016,2020 Intel Corporation. */ =20 -#include -#include +#include +#include #include #include #include #include =20 -#include #include -#include -#include -#include =20 -#define BMA220_REG_ID 0x00 -#define BMA220_REG_ACCEL_X 0x02 -#define BMA220_REG_ACCEL_Y 0x03 -#define BMA220_REG_ACCEL_Z 0x04 -#define BMA220_REG_RANGE 0x11 -#define BMA220_REG_SUSPEND 0x18 +#include "bma220.h" =20 -#define BMA220_CHIP_ID 0xDD -#define BMA220_READ_MASK BIT(7) -#define BMA220_RANGE_MASK GENMASK(1, 0) -#define BMA220_SUSPEND_SLEEP 0xFF -#define BMA220_SUSPEND_WAKE 0x00 - -#define BMA220_DEVICE_NAME "bma220" - -#define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ - .type =3D IIO_ACCEL, \ - .address =3D reg, \ - .modified =3D 1, \ - .channel2 =3D IIO_MOD_##axis, \ - .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ - .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ - .scan_index =3D index, \ - .scan_type =3D { \ - .sign =3D 's', \ - .realbits =3D 6, \ - .storagebits =3D 8, \ - .shift =3D 2, \ - .endianness =3D IIO_CPU, \ - }, \ -} - -enum bma220_axis { - AXIS_X, - AXIS_Y, - AXIS_Z, -}; - -static const int bma220_scale_table[][2] =3D { - {0, 623000}, {1, 248000}, {2, 491000}, {4, 983000}, -}; - -struct bma220_data { - struct spi_device *spi_device; - struct mutex lock; - struct { - s8 chans[3]; - /* Ensure timestamp is naturally aligned. */ - aligned_s64 timestamp; - } scan; - u8 tx_buf[2] __aligned(IIO_DMA_MINALIGN); -}; - -static const struct iio_chan_spec bma220_channels[] =3D { - BMA220_ACCEL_CHANNEL(0, BMA220_REG_ACCEL_X, X), - BMA220_ACCEL_CHANNEL(1, BMA220_REG_ACCEL_Y, Y), - BMA220_ACCEL_CHANNEL(2, BMA220_REG_ACCEL_Z, Z), - IIO_CHAN_SOFT_TIMESTAMP(3), -}; - -static inline int bma220_read_reg(struct spi_device *spi, u8 reg) -{ - return spi_w8r8(spi, reg | BMA220_READ_MASK); -} - -static const unsigned long bma220_accel_scan_masks[] =3D { - BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), - 0 -}; - -static irqreturn_t bma220_trigger_handler(int irq, void *p) -{ - int ret; - struct iio_poll_func *pf =3D p; - struct iio_dev *indio_dev =3D pf->indio_dev; - struct bma220_data *data =3D iio_priv(indio_dev); - struct spi_device *spi =3D data->spi_device; - - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_ACCEL_X | BMA220_READ_MASK; - ret =3D spi_write_then_read(spi, data->tx_buf, 1, &data->scan.chans, - ARRAY_SIZE(bma220_channels) - 1); - if (ret < 0) - goto err; - - iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), - pf->timestamp); -err: - mutex_unlock(&data->lock); - iio_trigger_notify_done(indio_dev->trig); - - return IRQ_HANDLED; -} - -static int bma220_read_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int *val, int *val2, long mask) -{ - int ret; - u8 range_idx; - struct bma220_data *data =3D iio_priv(indio_dev); - - switch (mask) { - case IIO_CHAN_INFO_RAW: - ret =3D bma220_read_reg(data->spi_device, chan->address); - if (ret < 0) - return -EINVAL; - *val =3D sign_extend32(ret >> chan->scan_type.shift, - chan->scan_type.realbits - 1); - return IIO_VAL_INT; - case IIO_CHAN_INFO_SCALE: - ret =3D bma220_read_reg(data->spi_device, BMA220_REG_RANGE); - if (ret < 0) - return ret; - range_idx =3D ret & BMA220_RANGE_MASK; - *val =3D bma220_scale_table[range_idx][0]; - *val2 =3D bma220_scale_table[range_idx][1]; - return IIO_VAL_INT_PLUS_MICRO; - } - - return -EINVAL; -} - -static int bma220_write_raw(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - int val, int val2, long mask) +static int bma220_spi_probe(struct spi_device *spi) { - int i; - int ret; - int index =3D -1; - struct bma220_data *data =3D iio_priv(indio_dev); - - switch (mask) { - case IIO_CHAN_INFO_SCALE: - for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) - if (val =3D=3D bma220_scale_table[i][0] && - val2 =3D=3D bma220_scale_table[i][1]) { - index =3D i; - break; - } - if (index < 0) - return -EINVAL; - - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_RANGE; - data->tx_buf[1] =3D index; - ret =3D spi_write(data->spi_device, data->tx_buf, - sizeof(data->tx_buf)); - if (ret < 0) - dev_err(&data->spi_device->dev, - "failed to set measurement range\n"); - mutex_unlock(&data->lock); - - return 0; - } - - return -EINVAL; -} - -static int bma220_read_avail(struct iio_dev *indio_dev, - struct iio_chan_spec const *chan, - const int **vals, int *type, int *length, - long mask) -{ - switch (mask) { - case IIO_CHAN_INFO_SCALE: - *vals =3D (int *)bma220_scale_table; - *type =3D IIO_VAL_INT_PLUS_MICRO; - *length =3D ARRAY_SIZE(bma220_scale_table) * 2; - return IIO_AVAIL_LIST; - default: - return -EINVAL; - } -} - -static const struct iio_info bma220_info =3D { - .read_raw =3D bma220_read_raw, - .write_raw =3D bma220_write_raw, - .read_avail =3D bma220_read_avail, -}; - -static int bma220_init(struct spi_device *spi) -{ - int ret; - - ret =3D bma220_read_reg(spi, BMA220_REG_ID); - if (ret !=3D BMA220_CHIP_ID) - return -ENODEV; - - /* Make sure the chip is powered on */ - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret =3D=3D BMA220_SUSPEND_WAKE) - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - if (ret =3D=3D BMA220_SUSPEND_WAKE) - return -EBUSY; - - return 0; -} - -static int bma220_power(struct spi_device *spi, bool up) -{ - int i, ret; - - /** - * The chip can be suspended/woken up by a simple register read. - * So, we need up to 2 register reads of the suspend register - * to make sure that the device is in the desired state. - */ - for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - - if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) - return 0; - - if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) - return 0; - } - - return -EBUSY; -} - -static void bma220_deinit(void *spi) -{ - bma220_power(spi, false); -} - -static int bma220_probe(struct spi_device *spi) -{ - int ret; - struct iio_dev *indio_dev; - struct bma220_data *data; - - indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*data)); - if (!indio_dev) - return -ENOMEM; - - data =3D iio_priv(indio_dev); - data->spi_device =3D spi; - mutex_init(&data->lock); - - indio_dev->info =3D &bma220_info; - indio_dev->name =3D BMA220_DEVICE_NAME; - indio_dev->modes =3D INDIO_DIRECT_MODE; - indio_dev->channels =3D bma220_channels; - indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); - indio_dev->available_scan_masks =3D bma220_accel_scan_masks; - - ret =3D bma220_init(data->spi_device); - if (ret) - return ret; - - ret =3D devm_add_action_or_reset(&spi->dev, bma220_deinit, spi); - if (ret) - return ret; - - ret =3D devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, - iio_pollfunc_store_time, - bma220_trigger_handler, NULL); - if (ret < 0) { - dev_err(&spi->dev, "iio triggered buffer setup failed\n"); - return ret; - } - - return devm_iio_device_register(&spi->dev, indio_dev); -} - -static int bma220_suspend(struct device *dev) -{ - struct spi_device *spi =3D to_spi_device(dev); - - return bma220_power(spi, false); -} - -static int bma220_resume(struct device *dev) -{ - struct spi_device *spi =3D to_spi_device(dev); - - return bma220_power(spi, true); + return bma220_common_probe(spi); } -static DEFINE_SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resu= me); =20 static const struct spi_device_id bma220_spi_id[] =3D { - {"bma220", 0}, + { "bma220", 0 }, { } }; =20 static const struct acpi_device_id bma220_acpi_id[] =3D { - {"BMA0220", 0}, + { "BMA0220", 0 }, { } }; MODULE_DEVICE_TABLE(spi, bma220_spi_id); =20 -static struct spi_driver bma220_driver =3D { +static struct spi_driver bma220_spi_driver =3D { .driver =3D { .name =3D "bma220_spi", .pm =3D pm_sleep_ptr(&bma220_pm_ops), .acpi_match_table =3D bma220_acpi_id, }, - .probe =3D bma220_probe, + .probe =3D bma220_spi_probe, .id_table =3D bma220_spi_id, }; -module_spi_driver(bma220_driver); +module_spi_driver(bma220_spi_driver); =20 MODULE_AUTHOR("Tiberiu Breana "); -MODULE_DESCRIPTION("BMA220 acceleration sensor driver"); -MODULE_LICENSE("GPL v2"); +MODULE_DESCRIPTION("BMA220 triaxial acceleration sensor spi driver"); +MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("IIO_BOSCH_BMA220"); --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 A90262F39B0; Sat, 13 Sep 2025 15:40:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; cv=none; b=JX3n2ztzCEMRR0T9hltIwR4bDHj3Ta8eYlswHww3kSpTS63XuJwPJE2w7nEYI2vqc05LN9rqmB9jQnSXPfh6jCddt9zdG5pqSUsqe+KtPQPv3GtpwJUJTiFij1Em3jm6Rm+iPHwU8edCTsxLGwqlYx9YxpgczPGYqkAMb4VGwuw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; c=relaxed/simple; bh=nCc8MNKloJcbCVKHZATuu0OA29poSt0/TFh53Xn0qjA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AVZWKAbTWebV503XSXfOqgqDKLvpu2+0jSO/sBx4W5cNYle7V/1pFDhQVfAJPXvQgbyp18hu9/z13yJOJ+NglIppXMxBC1B1ojzrBii32ir2OsRPBxd2s5AMc/Xskgp92QKWtZIxWgKXApkwbHto1hCOzMoZwviWHfqNaTrYYOw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=CjESK+K5; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="CjESK+K5" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 54C43173BED; Sat, 13 Sep 2025 18:40:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lDV/VkkSOJlx5K7LDWqnUBUmGxPYTj9kpe7L4hyFO90=; b=CjESK+K5gTI4cVEZ7OIASyYkVtJxnL+JJtXPqYMmNy6CFmka4tTF47nJGow3ETMp3p7C0P 6qlpQZUnkT/hEqa25fc7prX5UzRhLufkPOVJFMBVso51Un/K8lPY9XDVEhbPdbObIWf5AO QBPGHVquHCi2tq8I1yMRQK2rpL8Pk1uuG0/yy9N66Ui/97Mg/12QStlCIJTuhkpfgGoLvX PGq1ExPeCQY3A/gDnRU/pgdjW6SEFUVsKIrWgik5q6b49YLFTTpK6Cs1R4/W3GC9B6Z40i BbJgELjcdy3OQh6AL/M6jc5aO3QoJyXgUFoR/+wn7+ZXj5Lqu9WEKWPRlbeLSA== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:26 +0300 Subject: [PATCH v3 05/18] iio: accel: bma220: add open firmware table 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: <20250913-b4-bma220_improvements-v3-5-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1071; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=nCc8MNKloJcbCVKHZATuu0OA29poSt0/TFh53Xn0qjA=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBRJBGy8Ffjhli2pPgncJq5uVOL43w6iN7w7 65BuEsRbh2JAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUQAKCRDPJpmZhE5/ MPl7D/9QtKOo0xL/AXcShe+H62h7TedQK3XvFZIsYpD8q+rlV0JUBLmmu6keowB68XSxdiNZtpz DaIrYxHOttSOVeK6bS1ra2+8g05UjrABjY0xB0a9Dt8tqwL3VrHZT1JKlISpOGm49/+BNTAYhN/ cv/i4utzb7qoXUlRfD+R123t/KM0KY0lQsU7a30+XJPbrowuQzRJCqiaO22SbdUCSGzijuKDvI+ M/vQGFaU+mbIp3YPi9oiNFy/2QaTrM+VPujyFnENQI0diyBcX4YiVYRhRECSRClcxE/igwStA5H Jh3D39yrog9puPc2/gXHIY/8rgcW4y8ymSywdKrAvilpjzcDfLF0+KUfZyR4hBo2tnA42YsYQQo y2vRdiJgWq5r1/oIyKaF9CfN7mabvCFbBXVc+50FgULs01jSOIIDxS2V5VkvIEjtRPNi9eqgwtE TyHigyhB4g9MsABV8DvVRo84Rk/WKwEWyIz+AQujMEN/L9I8z+W2E+Wdrewszys+J5/bX2sttnr VgwAV+eoqUZAFBWiUPekr+SBIEA5w0ka92PEu/DXEfyxxz1FLEpVGPstSyPFs4Vz9u6oxBFrnXV UyvDk51gdq4uFZyqjZaok8B9uAt7hF9gPll/iCa7AaJhcps4AEoxSVW4XaGzBOG/M7UVoM5FVma Q7KsGV4LheI2wCA== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add open firmware entry to the spi driver. Signed-off-by: Petre Rodan --- v1->v2 split from larger patch (Jonathan) v2->v3 no change --- drivers/iio/accel/bma220_spi.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 3ad5e43aae496d265a8cf198595bf824f8e73692..78820d90e39119d9755b6266a83= 29e11ffd55723 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -32,10 +32,17 @@ static const struct acpi_device_id bma220_acpi_id[] =3D= { }; MODULE_DEVICE_TABLE(spi, bma220_spi_id); =20 +static const struct of_device_id bma220_of_spi_match[] =3D { + { .compatible =3D "bosch,bma220" }, + { } +}; +MODULE_DEVICE_TABLE(of, bma220_of_spi_match); + static struct spi_driver bma220_spi_driver =3D { .driver =3D { .name =3D "bma220_spi", .pm =3D pm_sleep_ptr(&bma220_pm_ops), + .of_match_table =3D bma220_of_spi_match, .acpi_match_table =3D bma220_acpi_id, }, .probe =3D bma220_spi_probe, --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 A90E52F39B3; Sat, 13 Sep 2025 15:40:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778017; cv=none; b=VRvnVu5JfQt29rHseCxxnn+FHRyxmRfO72CdtgBpvrKnAK4gb0gpg2BGW0cxfF1Wlj2WerjLb5alNLNqNouxZaQtgULZIYAgNubzSHBXXwheh+cCAG6yjr7NNStn73j+nB70IN2jxzxq0a5DS6Y0SBKUIkImyFlK+v6O8glE9tw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778017; c=relaxed/simple; bh=tzHETT1LwFgmqS+/oI3LRgKCd8kuILtv5wjcUei899w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K3urg3bTV05JKSYk35hDRxzJ6mInBxD4A2mf4PJaO/eZ5O9DChRrHM++4Z+OpcKbrsozb12oU5chiXEAtydeHrRRH+qeIfNHtlvoKPLJrvnj8SCpX1B6OnGz05JIOuMdEj+7ZzY/PuBOS2dr4owWMCzaS6XUFS/3jl17jIa0Owg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=Z0XE9EXo; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="Z0XE9EXo" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id BEA38173BEE; Sat, 13 Sep 2025 18:40:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7aaVhPu78Kszr5QVkpu5SPLz4b7Y42zZbfQEUb+cxao=; b=Z0XE9EXox05YNO1xKkJM8xRw6pVZ1/T6wrY9Tnt3LrV9E6eLW5tAEMqNynUi66zByCkQ+r nqf9L1pz1rHWpgUKg5mLF0iwDPt+VjVxNpjk86OSX3osdpFICNiBO7GouLgY5k4/wdGlnv YONjamBPhWBtOSIViu6Z5uDOoB8+XVrIkSL1cTqq5nzTWygJ4L50m2iWUUSDtpkv8BgZa3 71Sr3XDlyuA2REHDUqRGp4JuZLXTRDNj1YcXHcHOb25FfkB80JgUpx+JVxab1AESv7s7C6 RMFXPe0/eFaZh1CNIAA+Jo3bIc7iaVdA2CQBsaz9zLEK3PvA4tNGzxXyusebPw== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:27 +0300 Subject: [PATCH v3 06/18] iio: accel: bma220: turn power supplies on 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: <20250913-b4-bma220_improvements-v3-6-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1245; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=tzHETT1LwFgmqS+/oI3LRgKCd8kuILtv5wjcUei899w=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBRbyClBgrVPrQASNozcvUcZTkUAgmoDEXYx 7qRrPbMpuyJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUQAKCRDPJpmZhE5/ MDZdEACX2k6uxOnQPdoJQ/E0S93/j0T7e6JHScwiVP3NroQPhrM5Cvi0ufLOVN+VXcgHQVYThxB l6vxs8Ih+egQV8/uS1HcVN2d9YUJHM66sszf/0kF5c8/7bYdCG4tXo7emWsDCGNGMG4lUImoJmY onJtDqW4o/CpNfisABVqIqw9YNlZiixmFI2IigjcKJ83/t2E5Ya2wP/9NtYviWEnVpjqDpd3z85 maNrEBVeGLcYSDkAlsix7scILqurrWVCgWq8d6pC8oK+OZN0KU1Flh9GdpyBjK9Cp9QI0n5Ljzi Y3mSu+mjtAV1QhPt8QXPqwnIZJ0Up1rnmNc+lOzh7Ff0IkG9eKYpBZrWB3tfu9JzObRxNB6QLf8 UU21JwFkQlVxCbcQInY5XdLX6jPUDl6mjhhtXOYwikPeuz0wi37685Kw2yqCeq6DoO4+j6t1rmt 6SFSEZXR/Vso5FACgak2bokxnJAafkQog5XvqGVgBNsyfTzItdTZB5RW0sAd0vJqCuLPYL6W7ET RmoL0Lwz2i3tVkoB7akdvv9NKN+JO5G9qLhOJ5FIRVfzBQkeqKseti8Ft+JmCUQ3FYIm/4xQ3tD qOxYKuV8UzfYGMOngLjaMU9KJLCsLj41QqcmwEUXOKZ6XG26bgtFupsaa3qljiLf3/kyLIl793o +rKBy84wkI2nZKQ== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add devm_regulator_bulk_get_enable() to device probe(). Signed-off-by: Petre Rodan --- v1->v2 split from larger patch v2->v3 change commit desc (Jonathan) --- drivers/iio/accel/bma220_core.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 6bc2e5c3fb6cebd50209acbcc2d5340630c27cd1..b6f1374a9cca52966c105511371= 0061a7284cf5a 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include =20 @@ -205,6 +206,13 @@ static const struct iio_info bma220_info =3D { static int bma220_init(struct spi_device *spi) { int ret; + static const char * const regulator_names[] =3D { "vddd", "vddio", "vdda"= }; + + ret =3D devm_regulator_bulk_get_enable(&spi->dev, + ARRAY_SIZE(regulator_names), + regulator_names); + if (ret) + return dev_err_probe(&spi->dev, ret, "Failed to get regulators\n"); =20 ret =3D bma220_read_reg(spi, BMA220_REG_ID); if (ret !=3D BMA220_CHIP_ID) --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 029DF2F39D1; Sat, 13 Sep 2025 15:40:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778017; cv=none; b=qSZMWhRszzWTOlvluXBmYYXJ+C5R+aS/QpAz935VFr0jefFPLuU9xZtxszZiwgO9UPpCn60ofHkvyycwgdkoBXVr45bAnuY8bRozAju1NWy8JjFIXPyAE4Xeyec4iy3+tQNaELODTRJ1NJ4yGcJVdf5EP0jMdH/YM6YGPOeZX7Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778017; c=relaxed/simple; bh=OHJ4r2UhWXoad4ezbOvnzHrBuNRSzuisdgv6HjeeqcU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g2JuOvYyg9VK8If3hMby/r6KmG0mCHWDgavLHhumnC3EdX3I2FbIU2u9f2yi4xbblTueHTgcYyVYoRpITLMP85OLHBr3/tOXIwGzxhWDlINO6x2UuTjLuTYnj3zi9ZoancHqrWQ2ThNY3SvcsAEv/nX4Xz7SSWjrKxVOwIfh0+U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=XC8lbWD8; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="XC8lbWD8" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 37BBD173BEF; Sat, 13 Sep 2025 18:40:07 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oLSHO5yDS8PTwMEW/Tqx3kDVp6uqBHCxdLqAzZrh9n0=; b=XC8lbWD8dpsFb3aCTsZpEz7wQXFESs0A8NHSn2GOEMYZxftp2MmAyEmBcDNID9l0QdotDc yAe9BzgizDji9rEJV5csgqtz547Pa0XhhJdhA5yajuedCI/YuHlieQOJTcbJNc2+13Vh0w X+pworq3gfqw+FgVoeNEGRVhF/J+6UFYH5m9Q4RJZIq+uAJ+9yfzRpuglVKODtIJVlJock xHu4Obq+Ds0WVqQk754gvzIjkYOF9zZJ4Zn755E7QL2YmmYtPSy5Dvm8zzmLIMdUqQ36PP DDsv7vFFhsKnovRh6Vwzn/Ts7FPEU6jytnx1v1bSFJAHcSCgrJtkiqpeNmKrVw== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:28 +0300 Subject: [PATCH v3 07/18] iio: accel: bma220: move bma220_power() fct 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: <20250913-b4-bma220_improvements-v3-7-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2073; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=OHJ4r2UhWXoad4ezbOvnzHrBuNRSzuisdgv6HjeeqcU=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBS4HwOghJfCH/vrhKd4s0KMYwhHZk/Xtv4v FdpEfK/jyKJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MPM8D/9m1kfk8eUPYf1CS32CTC5E2CtBr6G5UjCLvIR/q2QAoBfink2tyIu72iH6+dz5GKCHm1w ldwy9rPxT2q4m41mB/fbJ6IziipqmsxHdAmOBbLp3VZbWvBIo2bx7NSSGI7lvesaqJm9+/jom7U /j0p5MwtLdxCS0EUKSsAaLxtB3Yb65aId+z3sy4oAPDUQD7//bxK/CXVT+hY7lSUwaBKsQlMNif qbHF5KdG6JJGoo2Nq0sV/3fEyUpE4ah/NGs467tUesLRCpJ7201HRhS/slF4cfyXDLU1a/SdgzW 9O/qqHYOq4rk/Ak68EMRMlwwdA077jmfueOnae8+vRrAST5Pp3/fFxAbI089VZ9fNN5eX7XXqGY 7gyVumg2W6BxlGDFRw7UWpQfa6VbrK8M5f5RseRwN+sC4hnfIX37/Q5VxGrcEO9crZd5dJe1DIm Rtn5KblG0OQnAUt2JmBh7e2BIux8VZt19y17KmOT5Tk+mst2ULY2RwepGFvRAPDbLkWvetIFue+ srQ8Kfj4APnO764VgoJord9KyinGa3nyYe9TuhY1P0lQD4FZ25J2ttwqXqD+8mSdrPs+gbcEW9C 0h3FAKVUehRdJhv28yiXPjOJI1B55mhX1M2TD/HvAX1NJfVyMJ3HM3AKO5T/a/CNH+I8k1AM97u tKukNAkekyxWmXg== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Move bma220_power() fct before bma220_init() since it will make the next patch cleaner. Signed-off-by: Petre Rodan --- v2->v3 split from bigger patch (Krzysztof, Jonathan) --- drivers/iio/accel/bma220_core.c | 48 ++++++++++++++++++++-----------------= ---- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index b6f1374a9cca52966c1055113710061a7284cf5a..dc156fcc1435ace9bda5fabc878= 64f38ae7bee05 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -203,6 +203,30 @@ static const struct iio_info bma220_info =3D { .read_avail =3D bma220_read_avail, }; =20 +static int bma220_power(struct spi_device *spi, bool up) +{ + int i, ret; + + /** + * The chip can be suspended/woken up by a simple register read. + * So, we need up to 2 register reads of the suspend register + * to make sure that the device is in the desired state. + */ + for (i =3D 0; i < 2; i++) { + ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + if (ret < 0) + return ret; + + if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) + return 0; + + if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) + return 0; + } + + return -EBUSY; +} + static int bma220_init(struct spi_device *spi) { int ret; @@ -230,30 +254,6 @@ static int bma220_init(struct spi_device *spi) return 0; } =20 -static int bma220_power(struct spi_device *spi, bool up) -{ - int i, ret; - - /** - * The chip can be suspended/woken up by a simple register read. - * So, we need up to 2 register reads of the suspend register - * to make sure that the device is in the desired state. - */ - for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - - if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) - return 0; - - if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) - return 0; - } - - return -EBUSY; -} - static void bma220_deinit(void *spi) { bma220_power(spi, false); --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 01EC52F39C9; Sat, 13 Sep 2025 15:40:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778017; cv=none; b=LLPq/7Z2b8crT94ghPvRZ9kfTtgy6OM9T24LrDUjufEsS7CC71xSpDwO6fuRl+INbzX48p3T2fWhOOiEPdx0dgRQxgt6Rbjzk9YMp3u1l7mUoG1dUye1XJnoeTat2K83ujfiZQIfsUJlckeLTYxnTf/2gpH+u+wI8tYFSxtr7fY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778017; c=relaxed/simple; bh=kiTvKanWFJbaHUYayT5VU9Zl+pbyJ0hhXXQhg3n2Pv4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g/0N1ybnyrO82sH5K/NHaBpXzHo+dDhH006oqYLPhwmdAbhhU0RhNWEdf7DXgJLsHgKx9JvkTlRiIPhLlptAJDK0I2oMlwSFKst/dePLylcAZ0byz6ZVTjA0rOCjBSLDhqD2luyRXma8T5qNFzuGszTMY/yLKJqo+nPdw6e3IwM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=ybnVcbgs; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="ybnVcbgs" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id A63DD173BF0; Sat, 13 Sep 2025 18:40:07 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QUa0LRP/R6N3g4QAuYnqLIgZlxNhVNC+0kJgbARJu4c=; b=ybnVcbgs+tMM4fSxJgGHBt1U4Jm2pH8jj9k539v3NGxLS3fvmjavKfAEU64lQTpEtA3Gvg hJ0tcKXVPNB8Pfgfkfoo0nx4wo6a73QS2F5LV/9qiCN0PjYzg6BMHL2gn6fEy8P8oUq3OD hT9cq+B9hlpe6qOhqjh7x6uaFHFC4o4FT6uODwLAc9uE2rn1NCM/YZcn+8sQmqUPs0oQRQ 4+s5hh7nj8Vc8rNnnNlKseGCoxW8hgO5icseWbkhqJW9E+7Gm80sS+sxBObWTp9omYGk5/ fb66kf1koHptfq2xp5BGLECV8Y0rD5V7RKArGqEdORN9LrX4+yE0efcAeJ2gbg== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:29 +0300 Subject: [PATCH v3 08/18] iio: accel: bma220: reset registers during init stage 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: <20250913-b4-bma220_improvements-v3-8-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2641; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=kiTvKanWFJbaHUYayT5VU9Zl+pbyJ0hhXXQhg3n2Pv4=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBS1+RQLCWq3qQwQ8Nj5HYZvFcl6z3aK5jH4 91VNudsd5KJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MHdvD/9dTO7c7Fcq19J7TyMq0iDYwkqlHHahbc/51djWHB6Y9F3jQMtitRdQQuTTbL5awHun8lQ TF2F52TCfZ4w8ONQgXOisuHJrz/ToQ0XoPc20cUJEwuEhZG8HfKbAYgIna3F3Dps/zwV/ldOpWp o88dYhT5EnfM/lOZpXphv79xza88tZ2h4l3u02BrXpbjwGJmY2cw5a75HCo7j7QvQi87yrtPlS5 kTMfq9IWI0BHFx0YNcltR31vcy2WGYoFEjvkrajVNDErlID1hZYjPdudhqIpO4yOJN5RGgyHCYU z/guwHghtWlLrYtor3h4w44JiGYHedLyBCsTvdaFSfbG8U+1kSiyhTXXtSvwF81X64Uuarx/QXr clMudLzn4lPuGwrj3kOnSYBKL/WaVhKEWK5/OClmvKU8ERBCkrdeNJAbzNhUph4/ASUBlihLsGA GeCrn+hK8GkbSLNASh+MSMq+ADtGTX+fqRxBA2mL7C8Lx5AZLWl4aclKgcT8F8EKMzyTk/ve9tG JQXxnpIpRYyhiOhJZ1j1nTTPzQltoTKCtSL4lMpMEpegCEuTCRAKcybraHKEQXdIHjWbNLvSOzP O68G5Owc+OBjeNLnk+EIkJe14pYNg6dLj2q/12Tim8fpTPf2h2IjvG0ih20GN8MASaITDy/t+Vi 1HSKu8VVgprczlw== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Bring all configuration registers to default values during device probe(). Remove trivial code duplication regarding bma220_power() in _init() Signed-off-by: Petre Rodan --- v2->v3 - split from larger patch - remove 20% innocent parentheses in conditional (David) --- drivers/iio/accel/bma220_core.c | 43 +++++++++++++++++++++++++++++++++----= ---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index dc156fcc1435ace9bda5fabc87864f38ae7bee05..fad73bf6b8f29c0a33519c64c88= 88a01008f7579 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -29,12 +29,15 @@ #define BMA220_REG_ACCEL_Z 0x04 #define BMA220_REG_RANGE 0x11 #define BMA220_REG_SUSPEND 0x18 +#define BMA220_REG_SOFTRESET 0x19 =20 #define BMA220_CHIP_ID 0xDD #define BMA220_READ_MASK BIT(7) #define BMA220_RANGE_MASK GENMASK(1, 0) #define BMA220_SUSPEND_SLEEP 0xFF #define BMA220_SUSPEND_WAKE 0x00 +#define BMA220_RESET_MODE 0xFF +#define BMA220_NONRESET_MODE 0x00 =20 #define BMA220_DEVICE_NAME "bma220" =20 @@ -203,6 +206,30 @@ static const struct iio_info bma220_info =3D { .read_avail =3D bma220_read_avail, }; =20 +static int bma220_reset(struct spi_device *spi, bool up) +{ + int i, ret; + + /** + * The chip can be reset by a simple register read. + * We need up to 2 register reads of the softreset register + * to make sure that the device is in the desired state. + */ + for (i =3D 0; i < 2; i++) { + ret =3D bma220_read_reg(spi, BMA220_REG_SOFTRESET); + if (ret < 0) + return ret; + + if (up && ret =3D=3D BMA220_RESET_MODE) + return 0; + + if (!up && ret =3D=3D BMA220_NONRESET_MODE) + return 0; + } + + return -EBUSY; +} + static int bma220_power(struct spi_device *spi, bool up) { int i, ret; @@ -242,14 +269,14 @@ static int bma220_init(struct spi_device *spi) if (ret !=3D BMA220_CHIP_ID) return -ENODEV; =20 - /* Make sure the chip is powered on */ - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret =3D=3D BMA220_SUSPEND_WAKE) - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); - if (ret < 0) - return ret; - if (ret =3D=3D BMA220_SUSPEND_WAKE) - return -EBUSY; + /* Make sure the chip is powered on and config registers are reset */ + ret =3D bma220_power(spi, true); + if (ret) + return dev_err_probe(&spi->dev, ret, "Failed to power-on chip\n"); + + ret =3D bma220_reset(spi, true); + if (ret) + return dev_err_probe(&spi->dev, ret, "Failed to soft reset chip\n"); =20 return 0; } --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 B1A9B2F3C21; Sat, 13 Sep 2025 15:40:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; cv=none; b=ZHTgw7kI+BuqCg/EMLztYA4r8hWr4pu5nUl1/k05KAjPzZvvW2OrrU5y0NuCdeCGEhSavNEJ8oL4RbLiNAUkY4Hut4iG9QyKqyolWXKqkVySn2DXiufiJ4AV2NZ1CTcfQVBP6S0YaQyH4lukUDlH93yYgv21S1J6QxiHkplwPKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; c=relaxed/simple; bh=XT0h1eG0JoVte3XhqwukvD5D6xWONdFL7zvC58qTBKQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tCHEsWAyMCwqV8+029V66RIBugfg9HHcOxWFu0PIyubgwhM7o8tRrA4YFrHTDJA4s6aILHEekX0PLrb1CIK455CMAlenMYFgoEPEYGzlf41uOVx9W4L2We1IOyaTa3ND/H5nQTfUvn1uiW642iPfYI53W98K64P8s40Z0TaoS50= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=K2J8PIzl; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="K2J8PIzl" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 24EC5173BF1; Sat, 13 Sep 2025 18:40:08 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RnSZKcxQSUytQ3bLkEpLGeq2LN7bT+PLhjdXkHNsggY=; b=K2J8PIzlK0pmziqoXWkVfnweqXcXVZHVpYP/sbGwQe+6//FHWWyTDiB6CLcvaH3sTLwrVD q7SFaEuldCy/6hZD6S9jz2sB1h78RM+32pBn0LdnhkZVetepJMdT3FM0gREMVE6ti1PRuD HARhBoVzgk2SFqc6GCmSHJW+QHj6Bebv0eVu3KJ5dl/731iZbIWUN1oGQ5SZvtQl41aQoq 9wiq4F2NbZm3INmkYZqg9JYJZGBmUrbaWJtV3CqbWZsNE9NdlFyErjLzbL6vvhhEzPMiO6 0tQGfAbscVClkS3eXqghpAA6Gkvynau51tyJPG9XoPZT2VGPvwr07vyYXWRzlg== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:30 +0300 Subject: [PATCH v3 09/18] iio: accel: bma220: relax constraints during 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: <20250913-b4-bma220_improvements-v3-9-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=888; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=XT0h1eG0JoVte3XhqwukvD5D6xWONdFL7zvC58qTBKQ=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSTqmNa1YZrLeG1upgV9nOixG5nhswuf0ts m4aR8ovepGJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MItcEACKKYj1vI5vnrGr/gcNSqqVTkiPQcNWpNam52eZBdzBdTek2irY3Xp5qUjifzUb69Tdhi+ LPwVpzsCnTKksCK/G/c6RgYQXuxMCOPnQBTjMa+pWSM5g82UqHBB67BIn25v1BoJRSEZ26+kAo0 tsXt9abfCe4cQREuvY/QLu3g8UViyPj0W8253R5zKT7isrpH5aqirt+ipy0DYQhyj0C5G886mhK 1j4ecFwBgEEe/snqXQLCi4pkVTDKWNo/21+nLiFKqv0ju3yYmJ8x2J3+NyY/C96KwtvbgLizuYc /HyBLwdjWFOf8OHTGC8JH9ZemCmzG4wPf7w3k8MbG1GElTUxerxChrCySKeS2OdS/lvuQT79k4F 8VXt1CvfryLLSA5RAQ52gjmNaSXNhAE/m7MZARrnGosvQ9zT6gIQ74HXyZbBN9X89jXOhBJqpgq jYa5grcU1jcCpf2bVk1NktvhuIfjfqNj9HYG0anDTtPF7OifjlrrrlfHYjJQNmGfEghPfY+qY9r Yvn3VMXsWhTvQWFlSXyBW9g0P0s9eFVFj0bCQZpI/WF8kiR9+l2yiGD/LAKAi2jhMERBKehY2BL ljngb/17Mt5HxzT9ZXMruVLFHV6ur/F7MNXiOWhK7gmGL3T3BQkI4e/ZdcP9PBJmUqACHlBTpTB Rsp1E0mYFxbmXjQ== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Allow compatible chips to work even if their identifier is different. Signed-off-by: Petre Rodan --- v2->v3 replace err with dev_info() (Jonathan) --- drivers/iio/accel/bma220_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index fad73bf6b8f29c0a33519c64c8888a01008f7579..7fdb83cedfa1809490cfb7f8953= 2182123d580ba 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -267,7 +267,7 @@ static int bma220_init(struct spi_device *spi) =20 ret =3D bma220_read_reg(spi, BMA220_REG_ID); if (ret !=3D BMA220_CHIP_ID) - return -ENODEV; + dev_info(&spi->dev, "Unknown chip found: 0x%02x\n", ret); =20 /* Make sure the chip is powered on and config registers are reset */ ret =3D bma220_power(spi, true); --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 B1B3F2F3C22; Sat, 13 Sep 2025 15:40:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; cv=none; b=Hs/9Bac6jW1Igs0ZJUHxifa0akWrfKP3pKcBNWQHFv1waA4dt1S7cge2rVUn4oLNBWy5qDIuHlBTU2/AIS94m9d/KEq+/2GwXh5M8nJySqniYhT5N2eE/0Vxw466ni/90escxVB+VbN/ywXYR9OfiqCgshEGIOnwZs1hsQ4Z6VE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; c=relaxed/simple; bh=5Z5fQY124O1ZTsyLp6uOfQ7IKxjVw20DcNlEyNQKf20=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tG4BArioNAxMuT9y/k9QAtPiO/KJR0jc0S81pfXQ8JnPwq7jtO+7qyPCJxCx8FJJE7DKbkA1LHcEqmyDVgvzc045zucmsqzgtRYKHpH0pDx3BV4kRxEOxBl5jeoQURQjuO3CeEXk2LxTj8OgHuza5mK8YZbE4HvFBrTXhQ7sAww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=nzQARv5s; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="nzQARv5s" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 8C6C5173BF2; Sat, 13 Sep 2025 18:40:08 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aCmRSUGYCg8xSs/+OsTWqTMn8J3LYpsqIOYhQbqzKRY=; b=nzQARv5saup7+ZhvcBApnSQR90hge/MUWsLtUSrT2Otl4jX+4pr9RNI0gVs1B6NtHHC9CF Dp3iyx85C0SNCqnmq9s6SI81sh7NnREYqKE8yJ9BdD91Fn8ZCpHK2eoCwlCEVbvD5/TKFj zphkxtBfn/Nfj4YZGrFF7WvPCVHzLPh2ChD4dRMKRLw5GRtnl5Kp+4VOQa9LNxB4VC8R1i nE3gBRUpgZKpTHfYEGlwNIsLAnPF0zi5uaY2x9Uuxqb7DBWhHJlS3NIwF8kDUPmS4p88zV YcfQFySmIkNq9LZ9CfElJSuQKreI8YA9HhU9hD5Exkag9n2rCn8Nv7bOGpNvcQ== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:31 +0300 Subject: [PATCH v3 10/18] iio: accel: bma220: migrate to regmap API 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: <20250913-b4-bma220_improvements-v3-10-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=16390; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=5Z5fQY124O1ZTsyLp6uOfQ7IKxjVw20DcNlEyNQKf20=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBS9jNxQrgN59jcFWJLkI3NPNGd+Amsmy7oG uRJFHlANlWJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MCgzEACKce8ek57uy0hdB33iqoLLobKo+jAuVltmW6XjKHMHhsdynStrOenuw9D6xDYezJOlGev bVjR6uds6XiMjZU0woCe/N3E/nCkonVvSwTBm7bAdf+hnAfDHLELCYnh++6kk2CaRLD8BCnoW8G jQ4POyVWHv08HQh4/Nu1dZrPdLGJwh48a4ioe4pcMe3Zn8a9xIYwSigR+TxLflnuPYrNBRLwJmY VzOPtp9E+5/xX7l0a2WlmHSIv1lnYtwNucqADRhZUqpCKLjf0tLMgNfxsup+2TlqVA5Nq/wMEX9 ins/G8efwAL7yUxXWs4IIp852f42F1kfQzWz/iJr2kPAYpPb/UGKpkaqjHkNYWqD5LPR9A77kfh TTv8ylQwZPUQOgNY5J9GJt1N8CXv1bfevFoCEyxMMV3JWIKQKfrvUxVwjCqb9QiKPkdGA9YWiBC uHOHrVHOE9cQUJqbbEmGuI/JIQ3xkna6YYD1M8NXkNRHHOwJinpkmC0EoB5/mVWlUvQk6vh/wa5 VA9rZCiAYKkUbm2V3vK8DLAhvARP2QlvJbxb36/UyfKtGIZcvIJfI4McfF0HInGTxSMphfSAcvD xBavZABxr/3dGonxWrgFK7PPWRkl7De3bn8Q6tL2haBkRM3CQfRp4VyRmRWZWR+LvCD86rQm/kh PSs9jx7y6JaWg7w== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Switch to regmap API. Signed-off-by: Petre Rodan --- v1->v2 - split out into more patches (Jonathan) v2->v3 - split out into even more patches (Jonathan) - use dev_err_probe() (Jonathan) --- drivers/iio/accel/Kconfig | 2 + drivers/iio/accel/bma220.h | 5 +- drivers/iio/accel/bma220_core.c | 244 ++++++++++++++++++++++++++++--------= ---- drivers/iio/accel/bma220_spi.c | 10 +- 4 files changed, 183 insertions(+), 78 deletions(-) diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig index 4648be329917a3054615ed324156d67f53baefb6..988fe4b1f9a52c2e671ea30d859= 0f25ee1685ac7 100644 --- a/drivers/iio/accel/Kconfig +++ b/drivers/iio/accel/Kconfig @@ -219,6 +219,7 @@ config BMA180 config BMA220 tristate "Bosch BMA220 3-Axis Accelerometer Driver" depends on SPI + select REGMAP select IIO_BUFFER select IIO_TRIGGERED_BUFFER select BMA220_SPI if SPI @@ -232,6 +233,7 @@ config BMA220 =20 config BMA220_SPI tristate + select REGMAP_SPI depends on BMA220 =20 config BMA400 diff --git a/drivers/iio/accel/bma220.h b/drivers/iio/accel/bma220.h index dea34244b4fc4971841dc60d79db6c7db27bea20..f9f4fa3daf33665f07f8bf07346= 8dff070b46d74 100644 --- a/drivers/iio/accel/bma220.h +++ b/drivers/iio/accel/bma220.h @@ -9,10 +9,11 @@ #define _BMA220_H =20 #include +#include =20 +extern const struct regmap_config bma220_spi_regmap_config; extern const struct dev_pm_ops bma220_pm_ops; -struct spi_device; =20 -int bma220_common_probe(struct spi_device *dev); +int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq= ); =20 #endif diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 7fdb83cedfa1809490cfb7f89532182123d580ba..73ce9a9511734961c2c6dadc99c= 21418070dce00 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -3,17 +3,21 @@ * BMA220 Digital triaxial acceleration sensor driver * * Copyright (c) 2016,2020 Intel Corporation. + * Copyright (c) 2025 Petre Rodan */ =20 #include +#include +#include +#include #include #include #include #include #include +#include #include #include -#include =20 #include #include @@ -24,16 +28,63 @@ #include "bma220.h" =20 #define BMA220_REG_ID 0x00 +#define BMA220_REG_REVISION_ID 0x01 #define BMA220_REG_ACCEL_X 0x02 #define BMA220_REG_ACCEL_Y 0x03 #define BMA220_REG_ACCEL_Z 0x04 +#define BMA220_REG_CONF0 0x05 +#define BMA220_HIGH_DUR_MSK GENMASK(5, 0) +#define BMA220_HIGH_HY_MSK GENMASK(7, 6) +#define BMA220_REG_CONF1 0x06 +#define BMA220_HIGH_TH_MSK GENMASK(3, 0) +#define BMA220_LOW_TH_MSK GENMASK(7, 4) +#define BMA220_REG_CONF2 0x07 +#define BMA220_LOW_DUR_MSK GENMASK(5, 0) +#define BMA220_LOW_HY_MSK GENMASK(7, 6) +#define BMA220_REG_CONF3 0x08 +#define BMA220_TT_DUR_MSK GENMASK(2, 0) +#define BMA220_TT_TH_MSK GENMASK(6, 3) +#define BMA220_REG_CONF4 0x09 +#define BMA220_SLOPE_DUR_MSK GENMASK(1, 0) +#define BMA220_SLOPE_TH_MSK GENMASK(5, 2) +#define BMA220_REG_CONF5 0x0a +#define BMA220_TIP_EN_MSK BIT(4) +#define BMA220_REG_IF0 0x0b +#define BMA220_REG_IF1 0x0c +#define BMA220_IF_SLOPE BIT(0) +#define BMA220_IF_DRDY BIT(1) +#define BMA220_IF_HIGH BIT(2) +#define BMA220_IF_LOW BIT(3) +#define BMA220_IF_TT BIT(4) +#define BMA220_REG_IE0 0x0d +#define BMA220_INT_EN_TAP_Z_MSK BIT(0) +#define BMA220_INT_EN_TAP_Y_MSK BIT(1) +#define BMA220_INT_EN_TAP_X_MSK BIT(2) +#define BMA220_INT_EN_SLOPE_Z_MSK BIT(3) +#define BMA220_INT_EN_SLOPE_Y_MSK BIT(4) +#define BMA220_INT_EN_SLOPE_X_MSK BIT(5) +#define BMA220_INT_EN_DRDY_MSK BIT(7) +#define BMA220_REG_IE1 0x0e +#define BMA220_INT_EN_HIGH_Z_MSK BIT(0) +#define BMA220_INT_EN_HIGH_Y_MSK BIT(1) +#define BMA220_INT_EN_HIGH_X_MSK BIT(2) +#define BMA220_INT_EN_LOW_MSK BIT(3) +#define BMA220_INT_LATCH_MSK GENMASK(6, 4) +#define BMA220_INT_RST_MSK BIT(7) +#define BMA220_REG_IE2 0x0f +#define BMA220_REG_FILTER 0x10 +#define BMA220_FILTER_MASK GENMASK(3, 0) #define BMA220_REG_RANGE 0x11 +#define BMA220_RANGE_MASK GENMASK(1, 0) +#define BMA220_REG_WDT 0x17 +#define BMA220_WDT_MASK GENMASK(2, 1) +#define BMA220_WDT_OFF 0x0 +#define BMA220_WDT_1MS BIT(1) +#define BMA220_WDT_10MS GENMASK(1, 0) #define BMA220_REG_SUSPEND 0x18 #define BMA220_REG_SOFTRESET 0x19 =20 #define BMA220_CHIP_ID 0xDD -#define BMA220_READ_MASK BIT(7) -#define BMA220_RANGE_MASK GENMASK(1, 0) #define BMA220_SUSPEND_SLEEP 0xFF #define BMA220_SUSPEND_WAKE 0x00 #define BMA220_RESET_MODE 0xFF @@ -69,14 +120,15 @@ static const int bma220_scale_table[][2] =3D { }; =20 struct bma220_data { - struct spi_device *spi_device; + struct device *dev; + struct regmap *regmap; struct mutex lock; + u8 range_idx; struct { s8 chans[3]; /* Ensure timestamp is naturally aligned. */ aligned_s64 timestamp; - } scan; - u8 tx_buf[2] __aligned(IIO_DMA_MINALIGN); + } scan __aligned(IIO_DMA_MINALIGN); }; =20 static const struct iio_chan_spec bma220_channels[] =3D { @@ -86,35 +138,57 @@ static const struct iio_chan_spec bma220_channels[] = =3D { IIO_CHAN_SOFT_TIMESTAMP(3), }; =20 -static inline int bma220_read_reg(struct spi_device *spi, u8 reg) -{ - return spi_w8r8(spi, reg | BMA220_READ_MASK); -} - static const unsigned long bma220_accel_scan_masks[] =3D { BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), 0 }; =20 +static bool bma220_is_writable_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case BMA220_REG_CONF0: + case BMA220_REG_CONF1: + case BMA220_REG_CONF2: + case BMA220_REG_CONF3: + case BMA220_REG_CONF4: + case BMA220_REG_CONF5: + case BMA220_REG_IE0: + case BMA220_REG_IE1: + case BMA220_REG_IE2: + case BMA220_REG_FILTER: + case BMA220_REG_RANGE: + case BMA220_REG_WDT: + return true; + default: + return false; + } +} + +const struct regmap_config bma220_spi_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .read_flag_mask =3D BIT(7), + .max_register =3D BMA220_REG_SOFTRESET, + .cache_type =3D REGCACHE_NONE, + .writeable_reg =3D bma220_is_writable_reg, +}; +EXPORT_SYMBOL_NS_GPL(bma220_spi_regmap_config, "IIO_BOSCH_BMA220"); + static irqreturn_t bma220_trigger_handler(int irq, void *p) { int ret; struct iio_poll_func *pf =3D p; struct iio_dev *indio_dev =3D pf->indio_dev; struct bma220_data *data =3D iio_priv(indio_dev); - struct spi_device *spi =3D data->spi_device; =20 - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_ACCEL_X | BMA220_READ_MASK; - ret =3D spi_write_then_read(spi, data->tx_buf, 1, &data->scan.chans, - ARRAY_SIZE(bma220_channels) - 1); + ret =3D regmap_bulk_read(data->regmap, BMA220_REG_ACCEL_X, + &data->scan.chans, + sizeof(data->scan.chans)); if (ret < 0) - goto err; + return IRQ_NONE; =20 iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), pf->timestamp); -err: - mutex_unlock(&data->lock); iio_trigger_notify_done(indio_dev->trig); =20 return IRQ_HANDLED; @@ -125,24 +199,22 @@ static int bma220_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { int ret; - u8 range_idx; + u8 index; + unsigned int reg; struct bma220_data *data =3D iio_priv(indio_dev); =20 switch (mask) { case IIO_CHAN_INFO_RAW: - ret =3D bma220_read_reg(data->spi_device, chan->address); + ret =3D regmap_read(data->regmap, chan->address, ®); if (ret < 0) return -EINVAL; - *val =3D sign_extend32(ret >> chan->scan_type.shift, + *val =3D sign_extend32(reg >> chan->scan_type.shift, chan->scan_type.realbits - 1); return IIO_VAL_INT; case IIO_CHAN_INFO_SCALE: - ret =3D bma220_read_reg(data->spi_device, BMA220_REG_RANGE); - if (ret < 0) - return ret; - range_idx =3D ret & BMA220_RANGE_MASK; - *val =3D bma220_scale_table[range_idx][0]; - *val2 =3D bma220_scale_table[range_idx][1]; + index =3D data->range_idx; + *val =3D bma220_scale_table[index][0]; + *val2 =3D bma220_scale_table[index][1]; return IIO_VAL_INT_PLUS_MICRO; } =20 @@ -158,6 +230,8 @@ static int bma220_write_raw(struct iio_dev *indio_dev, int index =3D -1; struct bma220_data *data =3D iio_priv(indio_dev); =20 + guard(mutex)(&data->lock); + switch (mask) { case IIO_CHAN_INFO_SCALE: for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) @@ -169,14 +243,12 @@ static int bma220_write_raw(struct iio_dev *indio_dev, if (index < 0) return -EINVAL; =20 - mutex_lock(&data->lock); - data->tx_buf[0] =3D BMA220_REG_RANGE; - data->tx_buf[1] =3D index; - ret =3D spi_write(data->spi_device, data->tx_buf, - sizeof(data->tx_buf)); + ret =3D regmap_update_bits(data->regmap, BMA220_REG_RANGE, + BMA220_RANGE_MASK, + FIELD_PREP(BMA220_RANGE_MASK, index)); if (ret < 0) return ret; - mutex_unlock(&data->lock); + data->range_idx =3D index; =20 return 0; } @@ -206,9 +278,12 @@ static const struct iio_info bma220_info =3D { .read_avail =3D bma220_read_avail, }; =20 -static int bma220_reset(struct spi_device *spi, bool up) +static int bma220_reset(struct bma220_data *data, bool up) { int i, ret; + unsigned int val; + + guard(mutex)(&data->lock); =20 /** * The chip can be reset by a simple register read. @@ -216,89 +291,112 @@ static int bma220_reset(struct spi_device *spi, bool= up) * to make sure that the device is in the desired state. */ for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SOFTRESET); + ret =3D regmap_read(data->regmap, BMA220_REG_SOFTRESET, &val); if (ret < 0) return ret; =20 - if (up && ret =3D=3D BMA220_RESET_MODE) + if (up && val =3D=3D BMA220_RESET_MODE) return 0; =20 - if (!up && ret =3D=3D BMA220_NONRESET_MODE) + if (!up && val =3D=3D BMA220_NONRESET_MODE) return 0; } =20 return -EBUSY; } =20 -static int bma220_power(struct spi_device *spi, bool up) +static int bma220_power(struct bma220_data *data, bool up) { int i, ret; + unsigned int val; =20 + guard(mutex)(&data->lock); /** * The chip can be suspended/woken up by a simple register read. * So, we need up to 2 register reads of the suspend register * to make sure that the device is in the desired state. */ for (i =3D 0; i < 2; i++) { - ret =3D bma220_read_reg(spi, BMA220_REG_SUSPEND); + ret =3D regmap_read(data->regmap, BMA220_REG_SUSPEND, &val); if (ret < 0) return ret; =20 - if (up && ret =3D=3D BMA220_SUSPEND_SLEEP) + if (up && val =3D=3D BMA220_SUSPEND_SLEEP) return 0; =20 - if (!up && ret =3D=3D BMA220_SUSPEND_WAKE) + if (!up && val =3D=3D BMA220_SUSPEND_WAKE) return 0; } =20 return -EBUSY; } =20 -static int bma220_init(struct spi_device *spi) +static int bma220_init(struct bma220_data *data) { int ret; + unsigned int val; + struct device *dev =3D data->dev; static const char * const regulator_names[] =3D { "vddd", "vddio", "vdda"= }; =20 - ret =3D devm_regulator_bulk_get_enable(&spi->dev, + ret =3D devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(regulator_names), regulator_names); if (ret) - return dev_err_probe(&spi->dev, ret, "Failed to get regulators\n"); + return dev_err_probe(dev, ret, "Failed to get regulators\n"); =20 - ret =3D bma220_read_reg(spi, BMA220_REG_ID); - if (ret !=3D BMA220_CHIP_ID) - dev_info(&spi->dev, "Unknown chip found: 0x%02x\n", ret); + /* Try to read chip_id register. It should return 0xdd. */ + ret =3D regmap_read(data->regmap, BMA220_REG_ID, &val); + if (ret) + return dev_err_probe(dev, ret, + "Failed to read chip id register\n"); =20 - /* Make sure the chip is powered on and config registers are reset */ - ret =3D bma220_power(spi, true); + if (val !=3D BMA220_CHIP_ID) + dev_info(dev, "Unknown chip found: 0x%02x\n", val); + + ret =3D bma220_power(data, true); if (ret) - return dev_err_probe(&spi->dev, ret, "Failed to power-on chip\n"); + return dev_err_probe(dev, ret, "Failed to power-on chip\n"); =20 - ret =3D bma220_reset(spi, true); + ret =3D bma220_reset(data, true); if (ret) - return dev_err_probe(&spi->dev, ret, "Failed to soft reset chip\n"); + return dev_err_probe(dev, ret, "Failed to soft reset chip\n"); =20 return 0; } =20 -static void bma220_deinit(void *spi) +static void bma220_deinit(void *data_ptr) { - bma220_power(spi, false); + struct bma220_data *data =3D data_ptr; + int ret; + + ret =3D bma220_power(data, false); + if (ret) + dev_warn(data->dev, + "Failed to put device into suspend mode (%pe)\n", + ERR_PTR(ret)); } =20 -int bma220_common_probe(struct spi_device *spi) +int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq) { int ret; struct iio_dev *indio_dev; struct bma220_data *data; =20 - indio_dev =3D devm_iio_device_alloc(&spi->dev, sizeof(*data)); + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) return -ENOMEM; =20 data =3D iio_priv(indio_dev); - data->spi_device =3D spi; - mutex_init(&data->lock); + data->regmap =3D regmap; + data->dev =3D dev; + + ret =3D bma220_init(data); + if (ret) + return ret; + + ret =3D devm_mutex_init(dev, &data->lock); + if (ret) + return ret; =20 indio_dev->info =3D &bma220_info; indio_dev->name =3D BMA220_DEVICE_NAME; @@ -307,38 +405,34 @@ int bma220_common_probe(struct spi_device *spi) indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); indio_dev->available_scan_masks =3D bma220_accel_scan_masks; =20 - ret =3D bma220_init(data->spi_device); + ret =3D devm_add_action_or_reset(dev, bma220_deinit, data); if (ret) return ret; =20 - ret =3D devm_add_action_or_reset(&spi->dev, bma220_deinit, spi); - if (ret) - return ret; - - ret =3D devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, iio_pollfunc_store_time, bma220_trigger_handler, NULL); - if (ret < 0) { - dev_err(&spi->dev, "iio triggered buffer setup failed\n"); - return ret; - } + if (ret < 0) + dev_err_probe(dev, ret, "iio triggered buffer setup failed\n"); =20 - return devm_iio_device_register(&spi->dev, indio_dev); + return devm_iio_device_register(dev, indio_dev); } -EXPORT_SYMBOL_NS(bma220_common_probe, "IIO_BOSCH_BMA220"); +EXPORT_SYMBOL_NS_GPL(bma220_common_probe, "IIO_BOSCH_BMA220"); =20 static int bma220_suspend(struct device *dev) { - struct spi_device *spi =3D to_spi_device(dev); + struct iio_dev *indio_dev =3D dev_get_drvdata(dev); + struct bma220_data *data =3D iio_priv(indio_dev); =20 - return bma220_power(spi, false); + return bma220_power(data, false); } =20 static int bma220_resume(struct device *dev) { - struct spi_device *spi =3D to_spi_device(dev); + struct iio_dev *indio_dev =3D dev_get_drvdata(dev); + struct bma220_data *data =3D iio_priv(indio_dev); =20 - return bma220_power(spi, true); + return bma220_power(data, true); } EXPORT_NS_SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resume, IIO_BOSCH_BMA220); diff --git a/drivers/iio/accel/bma220_spi.c b/drivers/iio/accel/bma220_spi.c index 78820d90e39119d9755b6266a8329e11ffd55723..7364428b3e363950d3be2a03b76= 57a2f0315fc5b 100644 --- a/drivers/iio/accel/bma220_spi.c +++ b/drivers/iio/accel/bma220_spi.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include =20 @@ -18,7 +19,14 @@ =20 static int bma220_spi_probe(struct spi_device *spi) { - return bma220_common_probe(spi); + struct regmap *regmap; + + regmap =3D devm_regmap_init_spi(spi, &bma220_spi_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(&spi->dev, PTR_ERR(regmap), + "failed to create regmap\n"); + + return bma220_common_probe(&spi->dev, regmap, spi->irq); } =20 static const struct spi_device_id bma220_spi_id[] =3D { --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 B1BB62F3C25; Sat, 13 Sep 2025 15:40:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778018; cv=none; b=Myo7cSAu9gIHmbbaU/avM8ELrVAE9/F59XXqh7TkwN7U8JK8qF3hab9lYAQvhsjiUYnqMxz/ht3M8W9+spPIPjbyT/2U2KIjKOy5gvnet3VjgVFHrpUetpa/eBCgF9xfj7buRoEPCXdJDXcHfWZlwL+Ni3yNUlpghBNS7P6h0Lc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778018; c=relaxed/simple; bh=q9F8ym1zAoiBANpZ3eFvKr8O9iTkRIkPpVEpgfAzDn0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=olRMee9WHVAyxsK+QqPwDj0n7mE4csdWJOb1NIutzfY6fzohDupDsxK65icn+n1H2VvwfhoT0XTEGnj4YSKbqczAQk0PVyLACjVNpSp0GYuxmVszUfW+sljFVWe+IqZ8o2lbKsgtvNAARzKEXqc2ryZBhFpOHzQIrVvPMP7VAew= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=3FtmIt+O; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="3FtmIt+O" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 07343173BF3; Sat, 13 Sep 2025 18:40:09 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=p7Qdrrn79fEoUwqtYHfjMe1WJcl835xDJC7SRGwc0Ds=; b=3FtmIt+OoKPXegTeKnfpn58a90YeXVAJYu7v3+QWnwwwQtzhXkbUuYLN7eBBHeAwYaztWb Rs/pOot0fSc0wJeqwPxGDrQbzUeeD0lLcoCzDz1TBF3rDFAwlghRadNb6hkw4iXTZyFhY1 PBUjnY3YL/N6gVht3Bu4pH2xqol/4J2INvSRIiU1rFMqvdtbg3WhGxlCCFSG3DLpRGqSyZ oXzp3AVq2noXd40sTsA+JbWVjBcqokcoVYm2oE49yE/YDsvKMogC9EviIG+3GztrYaLDwk 1qQaSv8TAwd5xcVRyqBLmIVXgtMpK8nsR33sxRh7IABCNamP98walNfNVTeFsA== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:32 +0300 Subject: [PATCH v3 11/18] iio: accel: bma220: populate buffer ts in trigger handler 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: <20250913-b4-bma220_improvements-v3-11-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1325; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=q9F8ym1zAoiBANpZ3eFvKr8O9iTkRIkPpVEpgfAzDn0=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSUcUcN/1qUu1tQb5KHAk13qOHhtQkjjCzU JFk1SCN86GJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MOzSEACSCIlEBMUfFedceyuZW4pFF1UKmNh0Mf85kjwA0B2H693mWdLd5Ytlf8iIUUxr/ujZZlZ N4iHeUt5kLWJSGL9oDlwYgoXhjRFRzLQHjqOOg7ph9fzYBN1Xi0e8+lxjWKdJ9GiIMqGvRo2c1z gFP5C35jwuY/aM0vaav4VNFaTa/lUdHkRpJTveTRnsWVd4+n8Whx29x2KZU82PQr1w9XOYBzul2 MymF4zV0CIboOvS/NTTtLJKtNQtt37czrMghd9hbAbZhv1IvzoGeOm9HZ4BUs0GL6DqsKKyRY1i xh/l3RCbf5p1jiBdTklrce3lBybVA1D3KI1CtXi5K2RZkJ/LC6t8xkNUue4NiHM0Azii3wY6pNk 7KI0+GtP4JUBlE1UORGgnY9qPfRJeRmp6gJi0rClivTAlcZ2PMhTAVQ4NBCwkrQSHtSQKnmzjiN 41GOF0V3DlsAWgmTsqr8vURZ8pLnjwcPi2XJbToaWHZ4IXrxDFMdd4Hy/5DAfbeU0wJ/tReIoEq ieoWkIyb1E5+zW5Xod+uZjlyxXH7IUSNGCqlpLDWZZf/lcm1LQrJ8g/hSNNcumOOmmClpbJ4Q4C D5lmt7J3lR4GYBmW+lydHnQJOD3KKkNuPyb/N/jKD0vhaGNHuy526FPAbCGJnIO5NEBwArNg/Uu BJgmpnsh59qU3YQ== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Populate buffer timestamps in trigger handler instead of in the top half. Otherwise all timestamps read zero. Signed-off-by: Petre Rodan --- v2->v3 split out from bigger patch (Jonathan) --- drivers/iio/accel/bma220_core.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 73ce9a9511734961c2c6dadc99c21418070dce00..728bf08c2cfb250266be56e69b1= 1af4b6c4a1347 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -188,7 +188,7 @@ static irqreturn_t bma220_trigger_handler(int irq, void= *p) return IRQ_NONE; =20 iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), - pf->timestamp); + iio_get_time_ns(indio_dev)); iio_trigger_notify_done(indio_dev->trig); =20 return IRQ_HANDLED; @@ -409,8 +409,7 @@ int bma220_common_probe(struct device *dev, struct regm= ap *regmap, int irq) if (ret) return ret; =20 - ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, - iio_pollfunc_store_time, + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, NULL, bma220_trigger_handler, NULL); if (ret < 0) dev_err_probe(dev, ret, "iio triggered buffer setup failed\n"); --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 CC9F62F3C2B; Sat, 13 Sep 2025 15:40:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778018; cv=none; b=nqWnUeO60ZqZZXcsyEFUgvXc1QN5lDdj4GzmQqRyO8rg0JXClgEBbdM1g6JYVAMPmXJRuGq/uqlkYJzSu4JwvO2DA84AJLEgeIUvWlCNMamAvFuQocg+bmR9S3HtGh2aqesMYDskTK8uuEgaepKgt8ajduV2psXdkH/LVA+rBTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778018; c=relaxed/simple; bh=tsNoPlCjfCHiEb2p/pYG4XMVMYkOUsEoLwtLAurz5Co=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nVsM3KUGSvgYgngRX0D4mH1giNSlulabm1cn4vzOqhVJm9Uq1skkR9GSD0W9tUylzskE7rTiSiUIWcm2iGCRdRVtOgOuoQASUSrPt+iAepD8iydBGBivM2PDObq/LyhuvIrPqgmTE9it0SPboVku2KFt77OCNHqdBY4I1rK7abo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=WHB/gfCo; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="WHB/gfCo" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 704F2173BF4; Sat, 13 Sep 2025 18:40:09 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pmmoCj8hbGQPagAoUbSHrF+wWVL1+DK6FSTPzmGgS9M=; b=WHB/gfCobYGlLWmQKKpFEQUqvJAHHs7By7E4keajxOMPRvFUyAhM/XqdjEYFfLgIXECkE/ VcRsqRYO2W6YEWyWZLdn70perRbVDYgL7aaNn0kCCP3aihhw1guM35+5qP+GBkEEaK9IuV VSnFYfrS6bg7xAyiRW219WC/tFRtQuwA6nXSwn1h5vaWumnIWId/iPegLfUegIjCroKwUP UI9ecuGM6AKRZhtt02rAMY7hyQi/cksAxh+NeNWp/0HMDWc4OAlMl+RVEXo8Kl2HEE1yNN w5+kJOaBZrIY0y9i/gEx1Wsw4qw6qwcc4H8khuAo54+iopr0fpkOdRmnurpB9w== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:33 +0300 Subject: [PATCH v3 12/18] iio: accel: bma220: use find_match_table fct 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: <20250913-b4-bma220_improvements-v3-12-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1631; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=tsNoPlCjfCHiEb2p/pYG4XMVMYkOUsEoLwtLAurz5Co=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSpXLQwhPkwg79mrQygW8HoJ1Kz8FUYwfTf A53ziVV1yWJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MELXD/9q+GKQHki7d+HTRcpltvJFo/jNxUtSG78UwhpsiGjUyssUQfEE9Stt/THb/F3AOB6kMy0 AnZDrgqwfxppD5ZtASIo+6oB21yoqriXwSu/VIy43CKFl1Tdmo5yd2wj2zYX5ha43RUyAKeaW7u keP/vdCPYnsJxkNdFlsbjbe03DRKaHj0qjKhLPTpvNsYToL57MCqj/hjZMj+gp7XZBW0C8TPj5n rT2GL9sZrTA0/2l197mX85LffAzWiXDw+G8cNWUq+W1y3jent2UG4Ze0THRoWahcNrHtC2IWn5z nEzKzVf9F1srFmdXQ3+4aFGDa14ttMwYuHYCBMi6U/QLlP7l0aPjv4j1XxnnUZ/PA6Io+tA18e2 sRmTrDUsj/SZ1/NFdlhBq4UlMjVUpIC0Du2H9RuppSYbN2rWFPI6ZyMredX6o6RAbFxIj0oiZaB RZYLTUxrvSZbct/NrWO8mVsQfL18p+HsiUVlW0PHfUBsBA30cjkx23XvFHJFCwVYw25NsE6hCR+ gaN/uGYJ7AlCePmK1Ke8/ehMer1/NxUWE+hjWtpPCWFW7Lmd5PepwmWszkW8DoTC1rs7lHVMFB2 3c7fLG/KWNvPd+hcOnnUaybL3DoYDFZkgRhMyPgqVkGfBwIJbMKZZm8MZJOtbk4736OZYIhljoS 9SkovY82GgFHcyg== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Clean up the code a bit by using a find_match_table function. Signed-off-by: Petre Rodan --- v2->v3 split out from bigger patch (Jonathan) --- drivers/iio/accel/bma220_core.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 728bf08c2cfb250266be56e69b11af4b6c4a1347..3252fb2d7fdcc84431ef19f5dba= c8be01060e036 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -221,11 +221,23 @@ static int bma220_read_raw(struct iio_dev *indio_dev, return -EINVAL; } =20 +static int bma220_find_match_2dt(const int (*tbl)[2], const int n, + const int val, const int val2) +{ + int i; + + for (i =3D 0; i < n; i++) { + if (tbl[i][0] =3D=3D val && tbl[i][1] =3D=3D val2) + return i; + } + + return -EINVAL; +} + static int bma220_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) { - int i; int ret; int index =3D -1; struct bma220_data *data =3D iio_priv(indio_dev); @@ -234,12 +246,9 @@ static int bma220_write_raw(struct iio_dev *indio_dev, =20 switch (mask) { case IIO_CHAN_INFO_SCALE: - for (i =3D 0; i < ARRAY_SIZE(bma220_scale_table); i++) - if (val =3D=3D bma220_scale_table[i][0] && - val2 =3D=3D bma220_scale_table[i][1]) { - index =3D i; - break; - } + index =3D bma220_find_match_2dt(bma220_scale_table, + ARRAY_SIZE(bma220_scale_table), + val, val2); if (index < 0) return -EINVAL; =20 --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 AF8622F4A18; Sat, 13 Sep 2025 15:40:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; cv=none; b=HVLgTQQ/X9NA/4pYv2OAOuvwdgdvHYusYIQiu8uqk5MeWHGC1lMAo62TgIVO6en4HnmSED/70Ypp41LlGhLSzovtL1jF4un6kKLyYFiYK/0kKe4gte370etQfk4ItJjaCLYsIlVqbzCJPk18qOL92hMPRSS/8ujsGrVkG2QK/aM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; c=relaxed/simple; bh=cuM5TiHwvZpA7h/CSYN/B/E+9xrSArcAg0vkWZF5ufQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dS8El0Lo8sR5EHwSdn0nrsNVaIq35xCkFv+mId1x7c5v80e2NQFu2zx3aUDsLwC5ehaxBEwexNDUA6gZcM5LTmerHqGr/QCeYb9FasxcGyaAZZglyPTrF2WYpBKFgPnz1MyepCFq8J7a9eKFh/iwu/UxAlgPuRlTt089QvD9VaA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=INDpckuq; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="INDpckuq" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id DF0BD173BF5; Sat, 13 Sep 2025 18:40:09 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6huP1+nDLI6k63MLOBg+p3mMtklkrrDFP4PDjhhA+HY=; b=INDpckuqk8KzuU/WMbEStnxdM9v9vreu7stAEofT5iibFHDcxZeXGDioTyNrklYzJut4G7 Y7WKi5Bhid9Z/2ZKPAPiDDcnbvDOU3b8b7L+9ry6FZsGZBElcvWy8XSE56cTL5HQLv39dT +o7CMuMHPfZTakdftRAZuWmc+BcqHT1Zu/5qYf9OURgzR5fHNUUjwWnSMO0i1b6mUMP+Q5 m52yJsX8b/CsY/1QQ4E70KKZSs9czp5BRn3mPd6DKj7+697wSz97woWAsLPKKoj+9Tel6F M8otqLMCntTPBe1R/EeIVxdaypzg4jROeuyXx6oyuh45rCJLM5xFdCGuGxBCBQ== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:34 +0300 Subject: [PATCH v3 13/18] iio: accel: bma220: add i2c module 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: <20250913-b4-bma220_improvements-v3-13-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5792; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=cuM5TiHwvZpA7h/CSYN/B/E+9xrSArcAg0vkWZF5ufQ=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSPHeQXexz+vuK/+v9D7WJP8iTm9jWDL43E g3Lxs6GageJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MNwHD/sF+6U1IxphyNaEDfaLzGOg6zVo1GcSGsnB/Axj5ZwZDKe5yqHKeNuXUQ6Ww7b7qGpokHM s6ygWNJ9Ktkklmt9CB5Q4LnNX569m0WJrjCc5+kTwuzGc3kvqcZu0dXugQWzfejR0Hmjq2GydV/ C9wduQvYNLf4HdPa9oLdS4zOvLXpA8hWei09XZrclDxkihWwelWkbOciaZ6kwyHymeezyUMo1CZ 21EbNtqe3KAu6DbIpPFgUVnogm4VOmcMYQlymrUSxk+uz8NhBW8zsRkGWgW5UZ/KzTGJ9BD3SQK PdSLkbWWc2wChT1YN+fIVYxn87ncf/7VeNZWTOcNZjtAhwLRgBMcU0+zzry1+6V98FqCYVl84iv M7YiCWOyG1qxSJXMZwoDq8cJ+U9k+PkbDYFUKYI9hWTTUcrpH6tScBYGElAEIRmv4hGsBSWeopR kZ+g9c06ROe2YOfx9QlyLDzxhutAyXQ+vVq+zMpgqExdLS7d3eQi7wdXd+Mx6RTlqlDIbiA/3DA 1DX4eYGylhw3rHYHzfGe/FBWW1CvLb6FPh8GM9S/LSkNffYPDVKJVSgyGewzqUEC4GF6Or6LZRk GVSGD7OavG/pkU3p/jakGkyA7HXKNkzrEvJXjJ19VWr4To5yxZ0FCk9L4qzIYoiTNaIe9WJW2pm 308mn28uG154LOQ== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add the bma220_i2c module. Note that this kernel module transparently shifts all register addresses 1 bit to the left, so all functions will operate based on the SPI memory map. Signed-off-by: Petre Rodan --- v1->v2 no change v2->v3 - depends I2C || SPI (David) - change extern const struct order (David) - remove unused includes (David) --- drivers/iio/accel/Kconfig | 11 ++++++-- drivers/iio/accel/Makefile | 1 + drivers/iio/accel/bma220.h | 1 + drivers/iio/accel/bma220_core.c | 18 +++++++++++++ drivers/iio/accel/bma220_i2c.c | 58 +++++++++++++++++++++++++++++++++++++= ++++ 5 files changed, 87 insertions(+), 2 deletions(-) diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig index 988fe4b1f9a52c2e671ea30d8590f25ee1685ac7..76911278fb217bd3e429c427b87= 3fb7eae26420e 100644 --- a/drivers/iio/accel/Kconfig +++ b/drivers/iio/accel/Kconfig @@ -218,10 +218,11 @@ config BMA180 =20 config BMA220 tristate "Bosch BMA220 3-Axis Accelerometer Driver" - depends on SPI + depends on I2C || SPI select REGMAP select IIO_BUFFER select IIO_TRIGGERED_BUFFER + select BMA220_I2C if I2C select BMA220_SPI if SPI help Say yes here to add support for the Bosch BMA220 triaxial @@ -229,7 +230,13 @@ config BMA220 =20 To compile this driver as a module, choose M here: the module will be called bma220_core and you will also get - bma220_spi if SPI is enabled. + bma220_i2c if I2C is enabled and bma220_spi if SPI is + enabled. + +config BMA220_I2C + tristate + select REGMAP_I2C + depends on BMA220 =20 config BMA220_SPI tristate diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile index 56a9f848f7f913633bc2a628c1ac5c9190774b9d..fa440a85928398fee927081f605= 595ba9fbc4ad9 100644 --- a/drivers/iio/accel/Makefile +++ b/drivers/iio/accel/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_ADXL380_I2C) +=3D adxl380_i2c.o obj-$(CONFIG_ADXL380_SPI) +=3D adxl380_spi.o obj-$(CONFIG_BMA180) +=3D bma180.o obj-$(CONFIG_BMA220) +=3D bma220_core.o +obj-$(CONFIG_BMA220_I2C) +=3D bma220_i2c.o obj-$(CONFIG_BMA220_SPI) +=3D bma220_spi.o obj-$(CONFIG_BMA400) +=3D bma400_core.o obj-$(CONFIG_BMA400_I2C) +=3D bma400_i2c.o diff --git a/drivers/iio/accel/bma220.h b/drivers/iio/accel/bma220.h index f9f4fa3daf33665f07f8bf073468dff070b46d74..a5127e997b1f970a86bd3394ed5= 66b3a92a8ee1c 100644 --- a/drivers/iio/accel/bma220.h +++ b/drivers/iio/accel/bma220.h @@ -11,6 +11,7 @@ #include #include =20 +extern const struct regmap_config bma220_i2c_regmap_config; extern const struct regmap_config bma220_spi_regmap_config; extern const struct dev_pm_ops bma220_pm_ops; =20 diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 3252fb2d7fdcc84431ef19f5dbac8be01060e036..5eef47151501119ab792aab6a51= 1938a16c1ade1 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -174,6 +174,24 @@ const struct regmap_config bma220_spi_regmap_config = =3D { }; EXPORT_SYMBOL_NS_GPL(bma220_spi_regmap_config, "IIO_BOSCH_BMA220"); =20 +/* + * Based on the datasheet the memory map differs between the SPI and the I= 2C + * implementations. I2C register addresses are simply shifted to the left + * by 1 bit yet the register size remains unchanged. + * This driver employs the SPI memory map to correlate register names to + * addresses regardless of the bus type. + */ + +const struct regmap_config bma220_i2c_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .reg_shift =3D -1, + .max_register =3D BMA220_REG_SOFTRESET, + .cache_type =3D REGCACHE_NONE, + .writeable_reg =3D bma220_is_writable_reg, +}; +EXPORT_SYMBOL_NS_GPL(bma220_i2c_regmap_config, "IIO_BOSCH_BMA220"); + static irqreturn_t bma220_trigger_handler(int irq, void *p) { int ret; diff --git a/drivers/iio/accel/bma220_i2c.c b/drivers/iio/accel/bma220_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..5dc7c38f53b3173ff43ca29b631= 32ec44e672cde --- /dev/null +++ b/drivers/iio/accel/bma220_i2c.c @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Bosch triaxial acceleration sensor + * + * Copyright (c) 2025 Petre Rodan + * + * Datasheet: https://media.digikey.com/pdf/Data%20Sheets/Bosch/BMA220.pdf + * I2C address is either 0x0b or 0x0a depending on CSB (pin 10) + */ + +#include +#include +#include +#include +#include +#include + +#include "bma220.h" + +static int bma220_i2c_probe(struct i2c_client *client) +{ + struct regmap *regmap; + + regmap =3D devm_regmap_init_i2c(client, &bma220_i2c_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(&client->dev, PTR_ERR(regmap), + "failed to create regmap\n"); + + return bma220_common_probe(&client->dev, regmap, client->irq); +} + +static const struct of_device_id bma220_i2c_match[] =3D { + { .compatible =3D "bosch,bma220" }, + { } +}; +MODULE_DEVICE_TABLE(of, bma220_i2c_match); + +static const struct i2c_device_id bma220_i2c_id[] =3D { + { "bma220" }, + { } +}; +MODULE_DEVICE_TABLE(i2c, bma220_i2c_id); + +static struct i2c_driver bma220_i2c_driver =3D { + .driver =3D { + .name =3D "bma220_i2c", + .pm =3D pm_sleep_ptr(&bma220_pm_ops), + .of_match_table =3D bma220_i2c_match, + }, + .probe =3D bma220_i2c_probe, + .id_table =3D bma220_i2c_id, +}; +module_i2c_driver(bma220_i2c_driver); + +MODULE_AUTHOR("Petre Rodan "); +MODULE_DESCRIPTION("Bosch triaxial acceleration sensor i2c driver"); +MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("IIO_BOSCH_BMA220"); --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 3DE552F49EA; Sat, 13 Sep 2025 15:40:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; cv=none; b=gSADSWfZq/uB39dR+6wDYPDgMO/KhNzJ8IwLlFTxa/jQQIyqj3J1E2I2cnmO1pqxnu5qgGUK3BZ8zegQJeJfWqDNZgvfBx6KSRwnrTqH4v4YrAvfjuoJexvbkm273h2ZtCf7pV2PDop02F6kCnRoU8FTWMGkNuiLMxmaHgo9gPE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778019; c=relaxed/simple; bh=P1ByNktlzb54OkAYWKnM+yrvmPUsH4ig/ZXROc/N450=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CX2OHmDnF6R0skHmK/l9YmUGB+pqu+mAazLzkrsNg7XA530tZJ9kgoKugbXxJ2OKrpz+RMLWZtjFteJJLyXWZVfE6y/zLb/gWFCmRdyU4iv1Ubi2zZLDj8VFpnYcEYq7oLHWgq6PgsNhXtahaWSaNyRbJdlvY5qGo7rbB4QuPeE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=kZcA4Jm8; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="kZcA4Jm8" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 74DD2173BF6; Sat, 13 Sep 2025 18:40:10 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=47m/qPFJBR+lEXOa3oWH8mAKCAHufuCZWnCFTKXj2tY=; b=kZcA4Jm8OU1UtmOJl6bfadVorD0glycGVk9D4HEKFtK7+UhCeKUeeNZ/U+U7xul3Xy8z62 0SItrcSD+htBCDCNic1uOu+3rsqbCMKwRavBTeksv4nbYHRjJ0CHevl6op1Iv/C7fZOTbV 5IuTSxC418BKRakMcH6gjqa8KiRY7/TkXmN9mQ+n4Osk1u5wVA5nZCXSouqmtl8wyIn3I9 MuVGf1HT1/6QvYfx4WukzQWNC1sX8kfGujzdU4zvDil6Blqvj9bAMNHuNf+JXt89lFkQU5 VpTxzKHOvwYQL6fSbtJJrnUz50RGCqjd4NbYRavKm/H0TtIzdn26BWnJupQ0lA== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:35 +0300 Subject: [PATCH v3 14/18] iio: accel: bma220: add i2c watchdog feature 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: <20250913-b4-bma220_improvements-v3-14-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1761; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=P1ByNktlzb54OkAYWKnM+yrvmPUsH4ig/ZXROc/N450=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSd1nrYwVwGQ4EK7GcRQ7VDPRKfUPbr4QUs 1R9AQDT6TeJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ ME9ND/9KgcNxAF3coHUrGrQEO27j4vPYfMfZuik7Fz6pJotxYEeuy5Z0UgBI6L8EOGTAskjje1W Q3Vpl1EbbhEIFIFkkg8UEIxYUW0HfuOfh0rk08BqHUgCI3YSBHpb8yol+uSUWZ1Or2YsgsgFeuX yRYHaqlBYZLUFSjoSfLpfxrmtJ+ra7Q6Dj0ZajQuruaHrHWRJ4t2ZyKb3IaU2HopLS5Dhpu1/ht ZgoMwrWKvidtl78+s63BHBexHOUEuXx5tNwRH43fQ/a+kIP2aP+y5o5dKR5GrNJK4uSFg8YjcJ/ RKMM01iFnpyqAq1apnOv1KQo5dhzK2ZF7CLSq/SHnGbfTDy18cM0RYFOXNJsmf4P7xm16/9RtLJ /sWK6UcZDho37CbID/fc+IuZA2rh8/OmmZkHgaSvemr479aYV0s0XYzq6q4TSDv8RY7zps8UfM6 KzIPmM06CgDKf1aiT8Z5fMRtb7ysRHzbjMqMb4iJQ8lMnTAdTGd8Ilh2KpvQTa6ffN2NbpmAM2V eHlSt1FDMh98iAvEH7sNKhKrCvbNpyBLurR7p4uF7dc8PTk50NIkJhYXU9gYwNAbbP1FuAAULgO 0ZZYLO7FyiOy2J8y98KfEoCby9cUIkAkA/Wdo5zIi1Fw2b1R2Mo9kx+1/3W425t5GOPfIesCwwg Xgc4OYF+8W162Og== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Sometimes the sensor gets stuck and enters a condition in which it pulls SDA low, thus making the entire i2c bus unusable. This problem is mitigated by activating a 1ms watchdog implemented in the sensor. Signed-off-by: Petre Rodan --- v1->v2 - hardcode 1ms timer watchdog to any i2c-based sensor instead of configuring a dt-based property - rename bma220_wdt() to bma220_set_wdt() v2->v3 no change --- drivers/iio/accel/bma220_core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 5eef47151501119ab792aab6a511938a16c1ade1..425a8b981e141aa496351f29df0= 597c989aa4a0a 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -358,6 +359,12 @@ static int bma220_power(struct bma220_data *data, bool= up) return -EBUSY; } =20 +static int bma220_set_wdt(struct bma220_data *data, const u8 val) +{ + return regmap_update_bits(data->regmap, BMA220_REG_WDT, BMA220_WDT_MASK, + FIELD_PREP(BMA220_WDT_MASK, val)); +} + static int bma220_init(struct bma220_data *data) { int ret; @@ -388,6 +395,13 @@ static int bma220_init(struct bma220_data *data) if (ret) return dev_err_probe(dev, ret, "Failed to soft reset chip\n"); =20 + if (i2c_verify_client(dev)) { + ret =3D bma220_set_wdt(data, BMA220_WDT_1MS); + if (ret) + return dev_err_probe(dev, ret, + "Failed to set i2c watchdog\n"); + } + return 0; } =20 --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 EB2E82F60C7; Sat, 13 Sep 2025 15:40:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778022; cv=none; b=lMjHaah4aQvcB3K25NJzO9o9EmuTO6yxr7Uo64IpgVbfqGeXrl4/Sfbr5R2D8V7286DkfnO1fzTBaT84kp/ipPdR75OC0e2gUHCL3EDBQJYK8NOM6xPTfQ4Hpc0EfosrB9IJ5c2lMc7Xp43mFh9yFRjOFnUNDinBh0qoHL2wOrA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778022; c=relaxed/simple; bh=SLbPXSub9o7RKO3pIHOCOkFToiXG7BesztU/FaK8/Oo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nt+lu5/2Eg8C++Fg1zFPUajr3VgWg7z0kyT50o2HHes9ygUKns+OCTtFGL4NJ32V8ypjVB8+vByiyMJFPmB3zxyhaTCe79RO+HOaPGZ4K86d6A8WqvX3v7NsGyR5Fpwi4hbHYwKDECfD1DIvN2LoMLhtpxmh4477olAw1HuENLQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=1v5hP1yI; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="1v5hP1yI" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id DF2F6173BF7; Sat, 13 Sep 2025 18:40:10 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778011; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lU0M9WUiPXDVh8EE8CDawLl3i6MJ3WuJWVLfPMwx+ns=; b=1v5hP1yI0MIUVF0L1jyYyMmf+jmvJhz3ujuuJYO29uZwslIjLE1tAzx7kNWZgrF0CGno7K SUQn89M1w+Ox7DUTwx6/nJ/BinIMZ5UgAmVnfaHOMUm460FGhBGMZEsN+8T9Pej0OsE0Oc QQv1sOkVxGpKrg5C0UnkN1TNql0b/0y2chA6bPZ6hwG0YN1THqY8XkpBrvR8VJk20blygi w0ZJvl8b4RlY+dnEbbxGK4wdUwwMqinxHb/tIvVVELb2VDdOEVPJlIGFAsNNKtyfs4WQwc /CWgJgulqlkOjBFEZKZd6x8Fj6Ja6dNtLImKlU48Vpv2eDNEPyF9014k8W209g== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:36 +0300 Subject: [PATCH v3 15/18] iio: accel: bma220: add interrupt trigger 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: <20250913-b4-bma220_improvements-v3-15-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3628; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=SLbPXSub9o7RKO3pIHOCOkFToiXG7BesztU/FaK8/Oo=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSeUf7bw7FcfRIE5/oU3JSdc0+NJXVtkMZg HRrNXwNJqGJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MBzHEADNOYlJVWGtFEVa+e1A6vnuEfUpkjZC7rSRXvBn1RCRlLkQ5Vb1+aDkczzZxu3TpLVaVtA BbFgxGm4SL+E60KNUMGJqHIe/fpED6OrZlSLn3CdbIAvIBEcCLL/Yl7cXR/O9OKH6ORwcfWhRte HthlBCaRM47QZujyLEuIQ2/wK+qeAgxUYa59/T9XwtG/4TKj61ZK3YxVFTtFmcOmahOROxUaDUO A9yAD1wd0ZwNuq0bOWoXb/iq9dJEN5Dzp8X6+RtB5kq/EmihBIHLLQBWoNFhMqiVJdOiG1UX08o YDV0+Gr8wJbUM6srpQJ3v5qHrmPNgShseU8CIwKwf6ONxhMSf5s7CrAUaGyIeTYae0GMSA/4a80 fTKWvIytks6ZLhYdBlMlbmu/mvZD5ZM1vCqBGkzUurUJyjrVgsRsTXoYjWhAWzifiqcYzX69A51 4fV3Cv2nHhfoK9vAuRdBdl1uLRuwmHbJzf2mppB1FNmFhZ7jvhbGwr/pEXOHs8k2DgvJ2HcdfOs PCj7APti+HwNAeyx5V1VORkvNWsqpuAWO92jlzCRY0ZPHxq9Yj0J2whebE+y+N7K2SULDfI9Ape 3c8aHfYhlRoqpmbcb0+kow001uo6Wi0qm+0f/G4P0Tlec8JbfkWtPMwy84ocyoK7z00ihEk9iD8 e5ICT+KJkyuwfXg== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add interrupt trigger. Signed-off-by: Petre Rodan --- v1->v2 no change, just patch split v2->v3 replace regmap_bulk_read with regmap_read (Jonathan) (I just realized BMA220_REG_IF0 is never used, even by future event patches) --- drivers/iio/accel/bma220_core.c | 61 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 61 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 425a8b981e141aa496351f29df0597c989aa4a0a..6297882bcf1b955291a2d874798= 4648bc6ee8512 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include =20 @@ -125,6 +126,7 @@ struct bma220_data { struct regmap *regmap; struct mutex lock; u8 range_idx; + struct iio_trigger *trig; struct { s8 chans[3]; /* Ensure timestamp is naturally aligned. */ @@ -193,6 +195,23 @@ const struct regmap_config bma220_i2c_regmap_config = =3D { }; EXPORT_SYMBOL_NS_GPL(bma220_i2c_regmap_config, "IIO_BOSCH_BMA220"); =20 +static int bma220_data_rdy_trigger_set_state(struct iio_trigger *trig, + bool state) +{ + struct iio_dev *indio_dev =3D iio_trigger_get_drvdata(trig); + struct bma220_data *data =3D iio_priv(indio_dev); + + guard(mutex)(&data->lock); + return regmap_update_bits(data->regmap, BMA220_REG_IE0, + BMA220_INT_EN_DRDY_MSK, + FIELD_PREP(BMA220_INT_EN_DRDY_MSK, state)); +} + +static const struct iio_trigger_ops bma220_trigger_ops =3D { + .set_trigger_state =3D &bma220_data_rdy_trigger_set_state, + .validate_device =3D &iio_trigger_validate_own_device, +}; + static irqreturn_t bma220_trigger_handler(int irq, void *p) { int ret; @@ -417,6 +436,24 @@ static void bma220_deinit(void *data_ptr) ERR_PTR(ret)); } =20 +static irqreturn_t bma220_irq_handler(int irq, void *private) +{ + struct iio_dev *indio_dev =3D private; + struct bma220_data *data =3D iio_priv(indio_dev); + int rv; + unsigned int bma220_reg_if1; + + guard(mutex)(&data->lock); + rv =3D regmap_read(data->regmap, BMA220_REG_IF1, &bma220_reg_if1); + if (rv) + return IRQ_NONE; + + if (FIELD_GET(BMA220_IF_DRDY, bma220_reg_if1)) { + iio_trigger_poll_nested(data->trig); + + return IRQ_HANDLED; +} + int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq) { int ret; @@ -446,6 +483,30 @@ int bma220_common_probe(struct device *dev, struct reg= map *regmap, int irq) indio_dev->num_channels =3D ARRAY_SIZE(bma220_channels); indio_dev->available_scan_masks =3D bma220_accel_scan_masks; =20 + if (irq > 0) { + data->trig =3D devm_iio_trigger_alloc(dev, "%s-dev%d", + indio_dev->name, + iio_device_id(indio_dev)); + if (!data->trig) + return -ENOMEM; + + data->trig->ops =3D &bma220_trigger_ops; + iio_trigger_set_drvdata(data->trig, indio_dev); + + ret =3D devm_iio_trigger_register(dev, data->trig); + if (ret) + return dev_err_probe(dev, ret, + "iio trigger register fail\n"); + indio_dev->trig =3D iio_trigger_get(data->trig); + ret =3D devm_request_threaded_irq(dev, irq, NULL, + &bma220_irq_handler, + IRQF_TRIGGER_RISING | IRQF_ONESHOT, + indio_dev->name, indio_dev); + if (ret) + return dev_err_probe(dev, ret, + "request irq %d failed\n", irq); + } + ret =3D devm_add_action_or_reset(dev, bma220_deinit, data); if (ret) return ret; --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 EB55B2F60C9; Sat, 13 Sep 2025 15:40:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778021; cv=none; b=ULpU8PYt9hz1G2E9ZIckXxZ9oG0phL/G/JElEPmFpRVPJNXQDtjw/qKHD1faFsaY+uoZPJ/vyz3AXThCsEt90gVcXgZhg6C5P0nCBiWo6f+5lTjxirHeagfEju8nFO6hfrJXetmq2Z1OSnqveJIzIL1vKEo98p8vtUGgHOqinnY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778021; c=relaxed/simple; bh=sUyLK4mjiPxml6XLVuyl+KqXPWsk9XNuaLa7OgMP9DY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j7ndWIWcv2LjJctsewOWKNxyjRKWnJ38zj1aTsNY8V1wCAvZBMktz+4we8NG8NlycH06UK0f4IiNzfYz40RiRmlZNn+s2/uvDv5DdLcDguz57i0u9qbkZq6cvrDOdnrYXm+v9LGD4hdTc7GH3Du6BGTagn9jA3qZ1ggIw9uzruM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=LufokHwa; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="LufokHwa" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 5D8DE173BF8; Sat, 13 Sep 2025 18:40:11 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778011; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=84hboF7CiZVHfrjWCxq7XHkJM0RXSj6s0PaFgrkOxYY=; b=LufokHwa6+K4ikmLTJiwTXdVjWbytrU+YdVBQNzfx9FBdhsOdpU4cEWhwJwKwiWy+qzE33 /9LWnIZ1/a3gJ21wuP1tr4lbzw8nuV0qOyq8Brhg6cwh1qxhJiEKATIkeSRRfBvGdH2pPN CgtRDYY7doqu5Tbqy0g2iQRsukP/gmtOYTyl1JMRGwBo/nJJ1y3iTSoKJGxbxU9f6AdumM DCqNepGoaEgcsPxLXqnYKRjpsPEG6nPtLlZ+0pkoNM2GQr1w6D/qxTkZLpxn1ItIMokDBL 9t5aWMGfypjaEcpPZM4N5V1m+I1iXOlHJWwP7MqbJ1tKwRbnjCRMSmv6tOMTKg== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:37 +0300 Subject: [PATCH v3 16/18] iio: accel: bma220: add LPF cut-off frequency mapping 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: <20250913-b4-bma220_improvements-v3-16-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4181; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=sUyLK4mjiPxml6XLVuyl+KqXPWsk9XNuaLa7OgMP9DY=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSADDmM2duwKa5lMTwu74KlgE5tph4z3oHe 5YtI2763M+JAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MIT2EACybHMNu0NhmB6ZoObb0nOl3GxfXLrOxnwDsgNOWOj7dMWzrejPVsIzD3c4QK7BRkK9fWN g+CVamykWC2jkcOW3ckg8b9PHqfQ5+KYJjYPPgbFfp9ObqR1JGmkjlzaGCee1DchS8LoN7D0JCe 5vJ5r5w9g3RK3koRX7QhPdFAxL5XjECy1sIsPxsNmOoJe+Dtrg4Z1hP+Q5Y4Lq3NRwzs0BJswgR 7T3gUZbHewhD2URiZpFAiIpUu9EIgI/p7FggdfIVKa9Cvi9AN+rpdeYJeEl9H7CRefKbhGDEjZE 8l27RxhDeJD3U4ScbksK3gzPWDa8K62EYAhV/lvMnj5s6/xnob+EKsCQ1jGdr4jgOT6mnQSb2/C um6nVKaFJSniX2Kf+XnUyMfBOP9ijNE2sDVBvHsc7K8+XFaZOC0gjEIeX7xI5/Oj4PoktA9fF/O yllBL1qHRVw8b9kDr5U5p/iab/gSxfMQ3KXKSLICWQmyeD0dl2Lt7+4uyZmyrIseEnMNEveSw3w if/BFhHlLMJf/2K+4UNbbY4bUuizudMzP7Uv7AK8Uq4JhjDgkyUupHeH4pMzgFk+wUR7PeeSq0i IsLEK6d7DxnQc46xxLQ2ckZ6huLfRQ0Hxc8/FLqo9OkHYdZgwIey7PaSGKDpIcwSjb/1shXzdmN fIx1FcnpfY2WslA== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add mapping for the low pass filter cut-off frequency. Make valid values visible for both the cut-off frequency and the scale. Signed-off-by: Petre Rodan --- v1->v2 rename variables to include unit capitalization (dB, Hz) v2->v3 3->1 line comment (Jonathan) --- drivers/iio/accel/bma220_core.c | 59 +++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 6297882bcf1b955291a2d8747984648bc6ee8512..508a1142a74b3fb330eea5222c4= b0abc8fc37e49 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -94,13 +94,23 @@ =20 #define BMA220_DEVICE_NAME "bma220" =20 +#define BMA220_COF_1000Hz 0x0 +#define BMA220_COF_500Hz 0x1 +#define BMA220_COF_250Hz 0x2 +#define BMA220_COF_125Hz 0x3 +#define BMA220_COF_64Hz 0x4 +#define BMA220_COF_32Hz 0x5 + #define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ .type =3D IIO_ACCEL, \ .address =3D reg, \ .modified =3D 1, \ .channel2 =3D IIO_MOD_##axis, \ .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), \ - .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE), \ + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_SCALE) | \ + BIT(IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY), \ + .info_mask_shared_by_type_available =3D BIT(IIO_CHAN_INFO_SCALE) |\ + BIT(IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY), \ .scan_index =3D index, \ .scan_type =3D { \ .sign =3D 's', \ @@ -125,6 +135,7 @@ struct bma220_data { struct device *dev; struct regmap *regmap; struct mutex lock; + u8 lpf_3dB_freq_idx; u8 range_idx; struct iio_trigger *trig; struct { @@ -141,6 +152,16 @@ static const struct iio_chan_spec bma220_channels[] = =3D { IIO_CHAN_SOFT_TIMESTAMP(3), }; =20 +/* Available cut-off frequencies of the low pass filter in Hz. */ +static const int bma220_lpf_3dB_freq_Hz_table[] =3D { + [BMA220_COF_1000Hz] =3D 1000, + [BMA220_COF_500Hz] =3D 500, + [BMA220_COF_250Hz] =3D 250, + [BMA220_COF_125Hz] =3D 125, + [BMA220_COF_64Hz] =3D 64, + [BMA220_COF_32Hz] =3D 32, +}; + static const unsigned long bma220_accel_scan_masks[] =3D { BIT(AXIS_X) | BIT(AXIS_Y) | BIT(AXIS_Z), 0 @@ -254,6 +275,10 @@ static int bma220_read_raw(struct iio_dev *indio_dev, *val =3D bma220_scale_table[index][0]; *val2 =3D bma220_scale_table[index][1]; return IIO_VAL_INT_PLUS_MICRO; + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + index =3D data->lpf_3dB_freq_idx; + *val =3D bma220_lpf_3dB_freq_Hz_table[index]; + return IIO_VAL_INT; } =20 return -EINVAL; @@ -272,6 +297,18 @@ static int bma220_find_match_2dt(const int (*tbl)[2], = const int n, return -EINVAL; } =20 +static int bma220_find_match(const int *arr, const int n, const int val) +{ + int i; + + for (i =3D 0; i < n; i++) { + if (arr[i] =3D=3D val) + return i; + } + + return -EINVAL; +} + static int bma220_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask) @@ -297,6 +334,21 @@ static int bma220_write_raw(struct iio_dev *indio_dev, return ret; data->range_idx =3D index; =20 + return 0; + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + index =3D bma220_find_match(bma220_lpf_3dB_freq_Hz_table, + ARRAY_SIZE(bma220_lpf_3dB_freq_Hz_table), + val); + if (index < 0) + return -EINVAL; + + ret =3D regmap_update_bits(data->regmap, BMA220_REG_FILTER, + BMA220_FILTER_MASK, + FIELD_PREP(BMA220_FILTER_MASK, index)); + if (ret < 0) + return ret; + data->lpf_3dB_freq_idx =3D index; + return 0; } =20 @@ -314,6 +366,11 @@ static int bma220_read_avail(struct iio_dev *indio_dev, *type =3D IIO_VAL_INT_PLUS_MICRO; *length =3D ARRAY_SIZE(bma220_scale_table) * 2; return IIO_AVAIL_LIST; + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: + *vals =3D (const int *)bma220_lpf_3dB_freq_Hz_table; + *type =3D IIO_VAL_INT; + *length =3D ARRAY_SIZE(bma220_lpf_3dB_freq_Hz_table); + return IIO_AVAIL_LIST; default: return -EINVAL; } --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 678A32F617B; Sat, 13 Sep 2025 15:40:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778021; cv=none; b=Kc0Q8ke2MMv+w2FJifGYfsQrHCUDT8oi769fbDkCI25FXdIpYBdPi7qJPQIuZIKk8UN/Qzhm4vFm7ijrJ8+mecOd4Tyjpdndb7DmO0tUJ7gC5Vn16uzsPbYohvt2Hg9tMTCxiPRMK2Ov8NUluUL2zOv+6AIlpaHKetjdMmIOIqI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778021; c=relaxed/simple; bh=5R8tQ4VrLnm2YLDC7B6YMclq3X4UjxnGUMONrZFEKuk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W8kCQ3av+wginl3f9b3w6+MVevVGO4zVZLOAUmBMF4IJ/dTyYzd1xcOC3pGyViiTzvY8K5ufMOqKwIVYFWp79lKLd2d3VQUpRM/QFgo2UHx+wBXx750Kle5xHeaHeqeii5BhLkPA/xLwuDTt+Wt2QFYPVRE9e5jC7ukvqBvxmhM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=4FQCto8J; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="4FQCto8J" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id CA8E0173BF9; Sat, 13 Sep 2025 18:40:11 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LI2ikw6a7+Jm1RPvMDac/LhN97h9gT3N3OAW284tnt0=; b=4FQCto8J7IhuTeIFB7cyx67F8eUm+BJ0qz3PilM2zOY5dCf7A9KaDdX172Hj+EFmmZAKW3 2iw/ww2HRzhxGX1Q6FAeUfBT3SL9/TDJdl94NdnH+1CqqXF8q8+yLltuz5Tvuybcht71Et VmCfALR4A11irvLbbvlRsbIOv5FeQ54pDt8Gy/hsGhD3tMECWMAt8t5JR6S8QHmn5QlIts NyGHczmJk/qiKGUW7XfmYuiYQ0L/bHFcbBEfb7var9ZQXnHAnD5MjxqZxDBZLi947d9CtI TgMzuw/7HEKA//shwHdTXoFLpF24Sa6Opv7WxXmfSFuRC8MQJXZi9zORhLrXhg== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:38 +0300 Subject: [PATCH v3 17/18] iio: accel: bma220: add debugfs reg access 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: <20250913-b4-bma220_improvements-v3-17-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1189; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=5R8tQ4VrLnm2YLDC7B6YMclq3X4UjxnGUMONrZFEKuk=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBS0jcKoBAkrfTz5MZxWfqMEFUxLoKBZ/ZsX iWRBO4b6yeJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MP0vEACZx8aTN03Bo4A2F6QiQ0rOt3+E/v0RfFD4qcyxkvJkpIK4yTHzAQi3PYEOSjQCC8cb8aw jR6V7EcMhV35tw7HnUsLs7k23AVPadln8wBgSDdyV25gTVkMWxqQ9JlnZFokfQeSxxtX8EuhIFV +6Om89Vdd4TM8mga11juy5YUPTQCgPzU0B2PJpwYdX+faUqp5dmxJCVBeShuwY8eUUTN4dtwyiT uODRs6gfQxpWJetYFNz64wOrSrkRjOTKk3Yzyv7BIEaQbkCgNz5Kz7B/Yx+oI1jFlxSgzkfcBKt FcjaVXidYbX1gG9PeGYf0y36tSEaGxBel4qkCMbl4zmN8MEMWPbAmqBWOSgLlhxG2sHkN4bHZ5m vntDEWDgW2is4zIqV5ddApPvyp7BIExAVOw5l6y1NFZAYZRwhc5XuyLiQpyFcbQj+GBnPVm0S4w VNJnge97Lg2gTAEyflcOXJeOUAQGF+mFTsJeG62qT4M/EYlIsJdO2pXCogIWoffMtx/Qa/y9n99 P7GYAHeMfipXWzo/3Pon2RvbeJA5922KxpfaN99qn2e/USDFMoo1RnZVHLM1X7vEPYWlxHELeIG 6lbuGKyNFTF2bqX45D9igH2hcH6BSPfAIvn8FcoHM3bsVDPoHV9Pf1wU1geMAtLcadXVOxmejGk /CbGmC96D1Cmn0A== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Allow read/write access to sensor registers for use in unit-tests. Signed-off-by: Petre Rodan --- v1->v3 no change --- drivers/iio/accel/bma220_core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/iio/accel/bma220_core.c b/drivers/iio/accel/bma220_cor= e.c index 508a1142a74b3fb330eea5222c4b0abc8fc37e49..9bc7a3023de76b9b519d2a64553= 5f12bb42f6f15 100644 --- a/drivers/iio/accel/bma220_core.c +++ b/drivers/iio/accel/bma220_core.c @@ -376,10 +376,21 @@ static int bma220_read_avail(struct iio_dev *indio_de= v, } } =20 +static int bma220_reg_access(struct iio_dev *indio_dev, unsigned int reg, + unsigned int writeval, unsigned int *readval) +{ + struct bma220_data *data =3D iio_priv(indio_dev); + + if (readval) + return regmap_read(data->regmap, reg, readval); + return regmap_write(data->regmap, reg, writeval); +} + static const struct iio_info bma220_info =3D { .read_raw =3D bma220_read_raw, .write_raw =3D bma220_write_raw, .read_avail =3D bma220_read_avail, + .debugfs_reg_access =3D &bma220_reg_access, }; =20 static int bma220_reset(struct bma220_data *data, bool up) --=20 2.49.1 From nobody Thu Oct 2 16:48:53 2025 Received: from mail.subdimension.ro (nalicastle.subdimension.ro [172.105.74.154]) (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 677D82F28F7; Sat, 13 Sep 2025 15:40:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=172.105.74.154 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778021; cv=none; b=i+zpoyO7MHrpWBP3oMYGAVpf05jPGXmD9QyBqjyrnGJUyLIJbk4YyVIChwdqrdVrn00oBq6zwb5BKdiSH5ZpP9NrXDvCW+4QfkPo3XnvckpB10aW1VHAMI9kHOuhisUH/t497G0dp/hn4GrBEr+1deVr+Jl+b5WtKdK991em1AM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757778021; c=relaxed/simple; bh=lzWx+a0dmfGLNa9KQBKgDX9o3geWkCG4XafSD5c/jTM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oYQm3n5nMp/55hhbf2PX3aVXfXfP9kwAukuew4v02h2AY7KFCczASjFM8XYmzkClNlgRhszGga4eYYz+9wcbrb05vFEH/aq/AJGUNfT12iGYOIjELRKOswQk/tRtJHUVsd2yXcbGFOouiJWKIWvMB90gr4qtHRgVQFfjTwniyQM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro; spf=pass smtp.mailfrom=subdimension.ro; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b=UqbOVKLg; arc=none smtp.client-ip=172.105.74.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=subdimension.ro Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=subdimension.ro header.i=@subdimension.ro header.b="UqbOVKLg" Received: from [10.212.0.13] (unknown [IPv6:2a02:2f0e:3e0c:5b00:e2d5:5eff:fed9:f1c4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail.subdimension.ro (Postfix) with ESMTPSA id 411D4173BFA; Sat, 13 Sep 2025 18:40:12 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=subdimension.ro; s=mail; t=1757778012; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4pA18o8EFs3MpHFqQmZXCGHKpMhUvAZNuJ+WPTR54bo=; b=UqbOVKLgbgAZnJocHtRz6T9SsiHgXuhkgFirmNKwm8T1/YujV2wxDttgJi5JqVcT039gMG 8NrW7F2NvDTzHwlBBGhiFpa1bLwfOgQoGc1X8/cAO8ZEXyWLLEesj6850P/y6ggH9PwVDn 7TISS2IFJwAeOBXLiKOljADivLeGFLKmzPv+RdnGzti6GHKuGastxgq/+uNm0q/w0zmdLr L2cBzZET8rWwUsAcOXU9nHpDV9JVnqXR1rkW0cwXTpHtwh2Z2n2E3a8pWhkubEyj+SHqMu ipjmeQXnLd4aQ3vAWD3HvBiA7os3I0+VhdHIOcvWAtjiOPUC7O4sfDQbxN0VWg== From: Petre Rodan Date: Sat, 13 Sep 2025 18:39:39 +0300 Subject: [PATCH v3 18/18] iio: accel: bma220: add maintainer 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: <20250913-b4-bma220_improvements-v3-18-0b97279b4e45@subdimension.ro> References: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> In-Reply-To: <20250913-b4-bma220_improvements-v3-0-0b97279b4e45@subdimension.ro> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Jonathan Cameron , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Petre Rodan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=875; i=petre.rodan@subdimension.ro; h=from:subject:message-id; bh=lzWx+a0dmfGLNa9KQBKgDX9o3geWkCG4XafSD5c/jTM=; b=owEBbQKS/ZANAwAIAc8mmZmETn8wAcsmYgBoxZBSrGtrBf8q/IsJC++D6a5b2R7PFtHZHTaXl ay/eev1idGJAjMEAAEIAB0WIQTYCn/BdhUZNew+X6nPJpmZhE5/MAUCaMWQUgAKCRDPJpmZhE5/ MHQWEADLbgtArbU+DB0vNAvwlBchBF8G1CvOpCoR6vsS70AuHWyQbRrtUubeviw2LDcrtcthXgg NElCUcsUqhPU+edphgInTyoeVTG08B4Yt1gjhNwdzdrZ4STHR6Rye3qqnuiS1UDmLhZ+r+e3oHj B6DZFQttWSlKGoTv5BiO3xJ+17skOjxVBcDR2sjWKRvkpNMAUF8nTYR7bhaQZkAyZMrqDKmnCZf WrngtqElx1W+IE3WVeKPYhVK+Dr7geoyEamRb/iKvJHkb5Fmut3GO0CrV0biqB0DbcsCdXhmFRi BfKb6aXPs3OMmjhIGdkhuAnir1kp2y9Ax+/r8FvCrzl2vfN2lXjTRBoeVedPOHm1t3tNEOvoty5 OnWxWfyL4y5kYCYu3cLDmVOcAoGdEvPpIUaoIVsmO738Q+s6Oz5ruZJHgD29VS62mimcZgI69bp 317OvRylYp8NpPKSOXnLmKgFZYWNuN7Fd/QKdjuWLkwOHkyyHx71T44PslR8ONGPZTaodV+PczZ dwJcgfPbYdbXsJF7FPhOeXmLMLehVaUC0s1lL1XN/A9WOlNUIY1jMigKNcIJtnaixqtlJ166Bgi cWUKxf7guvxOYoHEifzhOq424cJwTbGODihDiRSFV72pjwIja/OqI7KgSPlvotXPwKMb3Tjzl+T ut/x28udsWYGj4A== X-Developer-Key: i=petre.rodan@subdimension.ro; a=openpgp; fpr=D80A7FC176151935EC3E5FA9CF269999844E7F30 Add maintainer for this driver. Signed-off-by: Petre Rodan --- v1->v3 no change --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 75615d82593e173a9e07fd269163fecdc4711e8b..eb985bd06b7d960bbc25941a8ea= 7b420d83483b0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4402,6 +4402,13 @@ F: include/net/bond* F: include/uapi/linux/if_bonding.h F: tools/testing/selftests/drivers/net/bonding/ =20 +BOSCH SENSORTEC BMA220 ACCELEROMETER IIO DRIVER +M: Petre Rodan +L: linux-iio@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/iio/accel/bosch,bma220.yaml +F: drivers/iio/accel/bma220* + BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER M: Dan Robertson L: linux-iio@vger.kernel.org --=20 2.49.1