Skip to contentSkip to conversation

ARM: dts: omap3-n900: correct the accelerometer orientation

PATCH Applied Sicelo A. Mhlongo 3 participants 6 messages Jul 22, 2024 – Aug 5, 2024

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: dts: omap3-n900: correct the accelerometer orientation

Negate the values reported for the accelerometer z-axis in order to match Documentation/devicetree/bindings/iio/mount-matrix.txt.

Fixes 14a213dcb004 ("ARM: dts: n900: use iio driver for accelerometer")
---
 arch/arm/boot/dts/ti/omap/omap3-n900.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/ti/omap/omap3-n900.dts +1 -1
index 07c5b963af78..4bde3342bb95 100644
@@ -781,7 +781,7 @@ accelerometer@1d {
 
 		mount-matrix =	 "-1",  "0",  "0",
 				  "0",  "1",  "0",
-				  "0",  "0",  "1";
+				  "0",  "0",  "-1";
 	};
 
 	cam1: camera@3e {
Signature · 1 line
2.45.2
author
#1 lore raw
Quoted 26 lines · Sicelo A. Mhlongo

Negate the values reported for the accelerometer z-axis in order to match Documentation/devicetree/bindings/iio/mount-matrix.txt.

Fixes 14a213dcb004 ("ARM: dts: n900: use iio driver for accelerometer")
---
 arch/arm/boot/dts/ti/omap/omap3-n900.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/ti/omap/omap3-n900.dts +1 -1
index 07c5b963af78..4bde3342bb95 100644
@@ -781,7 +781,7 @@ accelerometer@1d {
 
 		mount-matrix =	 "-1",  "0",  "0",
 				  "0",  "1",  "0",
-				  "0",  "0",  "1";
+				  "0",  "0",  "-1";
 	};
 
 	cam1: camera@3e {
Signature · 1 line
2.45.2
CC Aaro Koskinen <[email protected]>, Andreas Kemnade <[email protected]>
maintainer
#2 lore raw
Quoted 24 lines · On Sat, 27 Jul 2024 20:41:20 +0200 Sicelo <[email protected]> wrote:
Quoted 23 lines · Sicelo A. Mhlongo

Negate the values reported for the accelerometer z-axis in order to match Documentation/devicetree/bindings/iio/mount-matrix.txt.

Fixes 14a213dcb004 ("ARM: dts: n900: use iio driver for

accelerometer")

---
 arch/arm/boot/dts/ti/omap/omap3-n900.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
(quoted diff) +0 -0

b/arch/arm/boot/dts/ti/omap/omap3-n900.dts index 07c5b963af78..4bde3342bb95 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-n900.dts +++ b/arch/arm/boot/dts/ti/omap/omap3-n900.dts @@ -781,7 +781,7 @@ accelerometer@1d {

arch/arm/boot/dts/ti/omap/omap3-n900.dts +1 -1
 		mount-matrix =	 "-1",  "0",  "0",
 				  "0",  "1",  "0",
-				  "0",  "0",  "1";
+				  "0",  "0",  "-1";
 	};
Quoted 8 lines
Quoted 4 lines

cam1: camera@3e {

Signature · 1 line
2.45.2

CC: Aaro Koskinen <[email protected]>, Andreas Kemnade <[email protected]>

I would expect it to be a rotation matrix but it is not. So maybe this should be fixed in,the driver?

Regards
Andreas

author
#3 lore raw

Hello Andreas

Quoted 32 lines · Andreas Kemnade
Quoted 24 lines · Sicelo A. Mhlongo
Quoted 23 lines

Negate the values reported for the accelerometer z-axis in order to match Documentation/devicetree/bindings/iio/mount-matrix.txt.

Fixes 14a213dcb004 ("ARM: dts: n900: use iio driver for

accelerometer")

---
 arch/arm/boot/dts/ti/omap/omap3-n900.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
(quoted diff) +0 -0

b/arch/arm/boot/dts/ti/omap/omap3-n900.dts index 07c5b963af78..4bde3342bb95 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-n900.dts +++ b/arch/arm/boot/dts/ti/omap/omap3-n900.dts @@ -781,7 +781,7 @@ accelerometer@1d {

arch/arm/boot/dts/ti/omap/omap3-n900.dts +1 -1
 		mount-matrix =	 "-1",  "0",  "0",
 				  "0",  "1",  "0",
-				  "0",  "0",  "1";
+				  "0",  "0",  "-1";
 	};
Quoted 8 lines
Quoted 4 lines

cam1: camera@3e {

Signature · 1 line
2.45.2

CC: Aaro Koskinen <[email protected]>, Andreas Kemnade <[email protected]>

Quoted 2 lines

I would expect it to be a rotation matrix but it is not. So maybe this should be fixed in,the driver?

The mount matrix is documented in the kernel docs [1], and this patch implements the suggestion that the z-axis should "be negative under the screen and positive in front of it, toward the face of the user."

On the N900, the accelerometer is mounted such that the raw z-values are opposite to the specification in the kernel docs. The driver itself seems to be correct, and is used on a number of other boards (such as Motorola Droid 4), reporting expected values when used in conjuction with mount matrices.

There is not a lot of userspace that uses accelerometer z-axis information, hence I could not perform thorough testing for the z-values when I submitted 14a213dcb004 ("ARM: dts: n900: use iio driver for accelerometer"). The error became evident when Maemo Leste gained support for face up and face down device states [2]. With the patch in this thread, userspace reports correct face up/down information.

I hope I have not misunderstood your reply, and please let me know if I am missing something.

Sicelo A. Mhlongo

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/iio/mount-matrix.txt#n31
[2] https://github.com/maemo-leste/mce/commit/0dac5a7e4286b5e9a4dafc627c49cef8cc92f092

maintainer Reviewed-by
#4 lore raw
Quoted 44 lines · On Mon, 29 Jul 2024 22:40:22 +0200 Sicelo <[email protected]> wrote:

Hello Andreas

Quoted 34 lines · Andreas Kemnade
Quoted 26 lines
Quoted 24 lines · Sicelo A. Mhlongo

Negate the values reported for the accelerometer z-axis in order to match Documentation/devicetree/bindings/iio/mount-matrix.txt.

Fixes 14a213dcb004 ("ARM: dts: n900: use iio driver for

accelerometer")

---
 arch/arm/boot/dts/ti/omap/omap3-n900.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
(quoted diff) +0 -0

b/arch/arm/boot/dts/ti/omap/omap3-n900.dts index 07c5b963af78..4bde3342bb95 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-n900.dts +++ b/arch/arm/boot/dts/ti/omap/omap3-n900.dts @@ -781,7 +781,7 @@ accelerometer@1d {

arch/arm/boot/dts/ti/omap/omap3-n900.dts +1 -1
 		mount-matrix =	 "-1",  "0",  "0",
 				  "0",  "1",  "0",
-				  "0",  "0",  "1";
+				  "0",  "0",  "-1";
 	};
Quoted 8 lines
Quoted 4 lines

cam1: camera@3e {

Signature · 1 line
2.45.2

CC: Aaro Koskinen <[email protected]>, Andreas Kemnade <[email protected]>

Quoted 2 lines

I would expect it to be a rotation matrix but it is not. So maybe this should be fixed in,the driver?

The mount matrix is documented in the kernel docs [1], and this patch implements the suggestion that the z-axis should "be negative under the screen and positive in front of it, toward the face of the user."

Quoted 6 lines

On the N900, the accelerometer is mounted such that the raw z-values are opposite to the specification in the kernel docs. The driver itself seems to be correct, and is used on a number of other boards (such as Motorola Droid 4), reporting expected values when used in conjuction with mount matrices.

Ok, I did not notice the other -1. It was mirroring before and now it is a clear 180 deg turn on the y-axis.

So

maintainer Applied
#5 lore raw
In reply to Sicelo A. Mhlongo
Quoted 6 lines · Sicelo A. Mhlongo

Negate the values reported for the accelerometer z-axis in order to match Documentation/devicetree/bindings/iio/mount-matrix.txt.

Fixes 14a213dcb004 ("ARM: dts: n900: use iio driver for accelerometer")

Applied, thanks!

[1/1] ARM: dts: omap3-n900: correct the accelerometer orientation

      commit: 5062d9c0cbbc202e495e9b20f147f64ef5cc2897

Best regards,

Signature · 1 line
Kevin Hilman <[email protected]>