lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <q2am2ffsvb5ajyzmns3gr5xns43mlpkfbj2ohvltml6tedhzre@d2h2jvp73ctv>
Date: Sun, 21 Sep 2025 15:23:08 +0200
From: Ondřej Jirman <megi@....cz>
To: guptarud@...il.com, Rob Herring <robh@...nel.org>, 
	Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, 
	Heiko Stuebner <heiko@...ech.de>, devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, 
	linux-rockchip@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add
 accelerometer sensor support

On Sun, Sep 21, 2025 at 03:10:50PM +0200, megi xff wrote:
> Hi,
> 
> On Sun, Sep 21, 2025 at 01:04:20AM -0700, Rudraksha Gupta via B4 Relay wrote:
> > From: Ondrej Jirman <megi@....cz>
> > 
> > Pinephone Pro uses mpu6500.
> > 
> > Signed-off-by: Ondrej Jirman <megi@....cz>
> > Signed-off-by: Rudraksha Gupta <guptarud@...il.com>
> > ---
> >  arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
> > index 65ee0b805034a4357a766d4f1f9efa2d4a843d77..21ff12ac5f6e52041f485c9f2702f5a15ee831f9 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
> > @@ -544,7 +544,13 @@ mpu6500@68 {
> >  		reg = <0x68>;
> >  		interrupt-parent = <&gpio1>;
> >  		interrupts = <RK_PC6 IRQ_TYPE_LEVEL_LOW>;
> > +		vdd-supply = <&vcc_1v8>;
> >  		vddio-supply = <&vcc_1v8>;
> > +
> > +		mount-matrix =
> > +			"1", "0", "0",
> > +			"0", "-1", "0",
> > +			"0", "0", "1";
> 
> I'm not sure where you got this patch, but it's not from me (I know for sure
> I never did any mount-matrix testing/DT patches) and should not have my
> Signed-of-by.

Oh well, this is about the accelerometer. :) Anyway, this review should still be
useful for the other patch in your series adding magnetometer support. You
should add mount-matrix to that, too, since it's not an identity matrix
apparently, which is the default without specifying mount-matrix in DT.

Regards,
	o.

> I have this in my tree https://codeberg.org/megi/linux/commit/d7cd2eab931e32fa94408a96d73b4e6c0616107a

> Which is:
> 
>   Signed-of-by: Leonardo G. Trombetta <lgtrombetta@....com>
> 
> And has different values on top of that and much more explanation. :)
> 
> 		mount-matrix =
> 			"0", "1", "0",
> 			"-1", "0", "0",
> 			"0", "0", "1";
> 
> So I guess you'd need to provide a bit more information about how you
> tested/verified these values, or where you've got them from.
> 
> See: https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/iio/mount-matrix.txt#L93
> 
> Looking at where the magnetometer is mounted, it's mounted on the bottom side of
> the PCB (U29 chip):
> 
>   https://xff.cz/dl/tmp/a0a36024d1ce9b15.png
>   https://xff.cz/dl/tmp/8f9dce63f3a7f3f4.png
> 
> Which means it would face from the PCB in the direction of the display and up
> towards the user who is looking at the display, due to the way PCB is mounted.
> 
> From the datasheet: https://xff.cz/dl/tmp/6b163fbe4335e58e.png the relationship
> of the chip orientation to measured XYZ values.
> 
> Putting it together https://xff.cz/dl/tmp/a17eec1488ea7705.png
> 
> 
> - Z increases downwards away from user looking at the phone display
> - Y increases to the left
> - X increases to the bottom of the display (towards USB-C connector)
> 
> 
> DT bindings state:
> 
> - Magnetometers (compasses) have their world frame of reference relative to the
>   geomagnetic field. The system orientation vis-a-vis the world is defined with
>   respect to the local earth geomagnetic reference frame where (y) is in the
>   ground plane and positive towards magnetic North, (x) is in the ground plane,
>   perpendicular to the North axis and positive towards the East and (z) is
>   perpendicular to the ground plane and positive upwards.
> 
>      ^^^ North: y > 0
> 
>      (---------)
>      !         !
>      !         !
>      !         !
>      !         !  >
>      !         !  > North: x > 0
>      ! 1  2  3 !  >
>      ! 4  5  6 !
>      ! 7  8  9 !
>      ! *  0  # !
>      (---------)
> 
> Mount matrix in your patch just flips Y axis and leaves the rest as is, so that
> doesn't seem to match what bindings ask for at all.
> 
> Just based on the PCB component placement and datasheets we should have:
> (small letters = DT bindings, big letters output from magnetometer)
> 
>   x = -Y
>   y = -X
>   z = -Z
> 
> So that gives:
> 
> 		mount-matrix =
> 			"0", "-1", "0",
> 			"-1", "0", "0",
> 			"0", "0", "-1";
> 
> I did a quick test (rotating the phone on the table with display
> facing up):
> 
> - Y is highest when right edge of the phone faces north:
> 
>   in_magn_x_raw: -3074
>   in_magn_y_raw: -690
>   in_magn_z_raw: -1622
> 
>   and lowest when pointing south
> 
>   in_magn_x_raw: -3569
>   in_magn_y_raw: -2052
>   in_magn_z_raw: -1824
>  
>   (X is roughly the same)
> 
>   so that matches x = Y
> 
> 
> - X is highest when top edge of the phone faces north:
> 
>   in_magn_x_raw: -3990
>   in_magn_y_raw: -1287
>   in_magn_z_raw: -1677
> 
>   and lowest when facing south
> 
>   in_magn_x_raw: -2553
>   in_magn_y_raw: -1314
>   in_magn_z_raw: -1624
> 
>   (Y is roughly the same)
> 
>   y = X
> 
> - Z is lower when display faces up
> 
>   in_magn_x_raw: -4083
>   in_magn_y_raw: -1179
>   in_magn_z_raw: -2436
> 
>   and higher with display facing down
> 
>   in_magn_x_raw: -3999
>   in_magn_y_raw: -1584
>   in_magn_z_raw: 393
> 
>   z = -Z
> 
> So based on that mount-matrix should be:
> 
> 		mount-matrix =
> 			"0", "1", "0",
> 			"1", "0", "0",
> 			"0", "0", "-1";
> 
> Go figure. :-D
> 
> Best regards,
> 	o.
> 
> 
> >  	};
> >  };
> >  
> > 
> > -- 
> > 2.51.0
> > 
> > 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ