* [PATCH v2 0/5] Upstreaming Pinephone Pro Patches
@ 2025-09-21 8:04 Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 1/5] arm64: dts: rk3399-pinephone-pro: Add light/proximity sensor support Rudraksha Gupta via B4 Relay
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-09-21 8:04 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Rudraksha Gupta, Ondrej Jirman, Leonardo G. Trombetta
Throughout the years, many have contributed to the Pinephone Pro (pro)
development. Unfortunately, these patches are scattered around various
repositories in different states.
I will be attempting to upstream these patches. I will start off with the
following small series:
- Add light/proximity sensor support
- Add accelerometer sensor support
- Add magnetometer sensor support
- Add mount-matrix for magnetometer
- Fix voltage threshold for volume down key
Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
---
Changes in v2:
- remove usb-typec node in dts from light/proximity sensor patch
- Link to v1: https://lore.kernel.org/r/20250920-ppp_light_accel_mag_vol-down-v1-0-c8bbcd3e2e94@gmail.com
---
Leonardo G. Trombetta (1):
arm64: dts: rk3399-pinephone-pro: Add mount-matrix for magnetometer
Ondrej Jirman (4):
arm64: dts: rk3399-pinephone-pro: Add light/proximity sensor support
arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
arm64: dts: rk3399-pinephone-pro: Add magnetometer sensor support
arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key
.../boot/dts/rockchip/rk3399-pinephone-pro.dts | 40 +++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
---
base-commit: f83ec76bf285bea5727f478a68b894f5543ca76e
change-id: 20250920-ppp_light_accel_mag_vol-down-817c84fdae8d
Best regards,
--
Rudraksha Gupta <guptarud@gmail.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/5] arm64: dts: rk3399-pinephone-pro: Add light/proximity sensor support
2025-09-21 8:04 [PATCH v2 0/5] Upstreaming Pinephone Pro Patches Rudraksha Gupta via B4 Relay
@ 2025-09-21 8:04 ` Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer " Rudraksha Gupta via B4 Relay
` (3 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-09-21 8:04 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Rudraksha Gupta, Ondrej Jirman
From: Ondrej Jirman <megi@xff.cz>
Pinephone Pro uses STK3311
Signed-off-by: Ondrej Jirman <megi@xff.cz>
Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
index 6f97e57f36f5599f4027a0f3db98bcbc69cef5e5..65ee0b805034a4357a766d4f1f9efa2d4a843d77 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
@@ -520,6 +520,17 @@ touchscreen@14 {
touchscreen-size-x = <720>;
touchscreen-size-y = <1440>;
};
+
+ light-sensor@48 {
+ compatible = "sensortek,stk3311";
+ reg = <0x48>;
+ interrupt-parent = <&gpio4>;
+ interrupts = <RK_PD3 IRQ_TYPE_EDGE_FALLING>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&stk3311_int>;
+ vdd-supply = <&vcc_3v0>;
+ leda-supply = <&vcc_3v0>;
+ };
};
&i2c4 {
@@ -689,6 +700,12 @@ vcc1v8_codec_en: vcc1v8-codec-en {
};
};
+ stk3311 {
+ stk3311_int: stk3311-int {
+ rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO &pcfg_input_pull_up>;
+ };
+ };
+
wireless-bluetooth {
bt_wake_pin: bt-wake-pin {
rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
2025-09-21 8:04 [PATCH v2 0/5] Upstreaming Pinephone Pro Patches Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 1/5] arm64: dts: rk3399-pinephone-pro: Add light/proximity sensor support Rudraksha Gupta via B4 Relay
@ 2025-09-21 8:04 ` Rudraksha Gupta via B4 Relay
2025-09-21 13:10 ` Ondřej Jirman
2025-09-21 8:04 ` [PATCH v2 3/5] arm64: dts: rk3399-pinephone-pro: Add magnetometer " Rudraksha Gupta via B4 Relay
` (2 subsequent siblings)
4 siblings, 1 reply; 13+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-09-21 8:04 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Rudraksha Gupta, Ondrej Jirman
From: Ondrej Jirman <megi@xff.cz>
Pinephone Pro uses mpu6500.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
Signed-off-by: Rudraksha Gupta <guptarud@gmail.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";
};
};
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/5] arm64: dts: rk3399-pinephone-pro: Add magnetometer sensor support
2025-09-21 8:04 [PATCH v2 0/5] Upstreaming Pinephone Pro Patches Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 1/5] arm64: dts: rk3399-pinephone-pro: Add light/proximity sensor support Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer " Rudraksha Gupta via B4 Relay
@ 2025-09-21 8:04 ` Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 4/5] arm64: dts: rk3399-pinephone-pro: Add mount-matrix for magnetometer Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key Rudraksha Gupta via B4 Relay
4 siblings, 0 replies; 13+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-09-21 8:04 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Rudraksha Gupta, Ondrej Jirman
From: Ondrej Jirman <megi@xff.cz>
Pinephone Pro uses AF8133J.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
index 21ff12ac5f6e52041f485c9f2702f5a15ee831f9..266a08540dd0fe099319ec703bb0828c8c5c2c25 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
@@ -554,6 +554,16 @@ mpu6500@68 {
};
};
+&i2c4 {
+ af8133j: compass@1c {
+ compatible = "voltafield,af8133j";
+ reg = <0x1c>;
+ reset-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>;
+ avdd-supply = <&vcc_3v0>;
+ dvdd-supply = <&vcc_1v8>;
+ };
+};
+
&io_domains {
bt656-supply = <&vcc1v8_dvp>;
audio-supply = <&vcca1v8_codec>;
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] arm64: dts: rk3399-pinephone-pro: Add mount-matrix for magnetometer
2025-09-21 8:04 [PATCH v2 0/5] Upstreaming Pinephone Pro Patches Rudraksha Gupta via B4 Relay
` (2 preceding siblings ...)
2025-09-21 8:04 ` [PATCH v2 3/5] arm64: dts: rk3399-pinephone-pro: Add magnetometer " Rudraksha Gupta via B4 Relay
@ 2025-09-21 8:04 ` Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key Rudraksha Gupta via B4 Relay
4 siblings, 0 replies; 13+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-09-21 8:04 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Rudraksha Gupta, Leonardo G. Trombetta
From: "Leonardo G. Trombetta" <lgtrombetta@gmx.com>
After experimenting with the magnetometer on the Pinephone Pro I found
out the mount-matrix currently reported by the AF8133J driver is just
the identity matrix (no rotation), which is wrong. It would seem to me
that there is currently no `mount-matrix` info and that's why the driver
reports a trivial answer. As far as I can tell from my tests, a 90
degree clockwise rotation in the XY plane would align it properly.
Signed-off-by: Leonardo G. Trombetta <lgtrombetta@gmx.com>
Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
index 266a08540dd0fe099319ec703bb0828c8c5c2c25..0a4121b05d36c5a7e05eddbd3514a11ae4f7d3eb 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
@@ -561,6 +561,11 @@ af8133j: compass@1c {
reset-gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>;
avdd-supply = <&vcc_3v0>;
dvdd-supply = <&vcc_1v8>;
+
+ mount-matrix =
+ "0", "1", "0",
+ "-1", "0", "0",
+ "0", "0", "1";
};
};
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key
2025-09-21 8:04 [PATCH v2 0/5] Upstreaming Pinephone Pro Patches Rudraksha Gupta via B4 Relay
` (3 preceding siblings ...)
2025-09-21 8:04 ` [PATCH v2 4/5] arm64: dts: rk3399-pinephone-pro: Add mount-matrix for magnetometer Rudraksha Gupta via B4 Relay
@ 2025-09-21 8:04 ` Rudraksha Gupta via B4 Relay
2025-09-21 11:20 ` Ondřej Jirman
4 siblings, 1 reply; 13+ messages in thread
From: Rudraksha Gupta via B4 Relay @ 2025-09-21 8:04 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
Rudraksha Gupta, Ondrej Jirman
From: Ondrej Jirman <megi@xff.cz>
U-Boot and Linux use different algorithms for determining voltage ranges
for comparison. Pick value that will work with both.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
index 0a4121b05d36c5a7e05eddbd3514a11ae4f7d3eb..4e6df664d780ed4798015db6b2fe79bf7c4e4c00 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
@@ -46,7 +46,7 @@ button-up {
button-down {
label = "Volume Down";
linux,code = <KEY_VOLUMEDOWN>;
- press-threshold-microvolt = <600000>;
+ press-threshold-microvolt = <400000>;
};
};
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key
2025-09-21 8:04 ` [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key Rudraksha Gupta via B4 Relay
@ 2025-09-21 11:20 ` Ondřej Jirman
2025-09-21 21:06 ` Rudraksha Gupta
0 siblings, 1 reply; 13+ messages in thread
From: Ondřej Jirman @ 2025-09-21 11:20 UTC (permalink / raw)
To: guptarud
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Hi,
On Sun, Sep 21, 2025 at 01:04:23AM -0700, Rudraksha Gupta via B4 Relay wrote:
> From: Ondrej Jirman <megi@xff.cz>
>
> U-Boot and Linux use different algorithms for determining voltage ranges
> for comparison. Pick value that will work with both.
>
> Signed-off-by: Ondrej Jirman <megi@xff.cz>
> Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
> ---
> arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
> index 0a4121b05d36c5a7e05eddbd3514a11ae4f7d3eb..4e6df664d780ed4798015db6b2fe79bf7c4e4c00 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
> @@ -46,7 +46,7 @@ button-up {
> button-down {
> label = "Volume Down";
> linux,code = <KEY_VOLUMEDOWN>;
> - press-threshold-microvolt = <600000>;
> + press-threshold-microvolt = <400000>;
This is fixes the issue accidentally...
According to the schematic the actual threshold is 1.8V*(2/12) = 0.3V :)
https://xff.cz/dl/tmp/f1410ee03fac4c5b.png
Linux adc-keys driver uses the "closest to the threshold voltage key wins"
algorithm.
https://elixir.bootlin.com/linux/v6.16.8/source/drivers/input/keyboard/adc-keys.c#L32
U-Boot uses the same algorithm implemented differently:
https://elixir.bootlin.com/u-boot/v2025.10-rc4/source/drivers/button/button-adc.c#L97
So my description in the commit message is wrong.
For the current volume up/down key voltage DT "thresholds" the actual threshold
used by the driver to determine which key will be detected will be:
(100 + (600 - 100)/2) = 350 mV
So unless you press the key very lightly, a lot of the time adc voltage will be
below 350 mV for the Volume Down key and will be misdetected as Volume Up key
press.
Here a few volume down key presses on my PPP:
[ 32.567143] volkey val 1791
[ 32.671337] volkey val 1791
[ 32.775266] volkey val 1791
[ 32.879208] volkey val 1791
[ 32.983109] volkey val 1791
[ 33.086836] volkey val 1791
[ 33.191116] volkey val 300
[ 33.295158] volkey val 298 <-----
[ 33.399351] volkey val 1791
[ 33.503339] volkey val 1792
[ 33.607128] volkey val 1792
[ 33.711296] volkey val 1791
[ 33.815307] volkey val 1791
[ 33.919333] volkey val 1791
[ 34.023392] volkey val 311
[ 34.127329] volkey val 305
[ 34.231124] volkey val 1791
[ 34.335390] volkey val 1791
[ 34.439303] volkey val 1791
[ 34.543256] volkey val 1791
On my other Pinephone Pro it goes down even to 293 mV when the button is pressed harder.
It doesn't help that the Volume Up button threshold in DT is set incorrectly, too.
It should be 2mV and not 100mV.
So the correct fix here is to change both button thresholds to:
Volume Down
press-threshold-microvolt = <300000>;
Volume Up
press-threshold-microvolt = <2000>;
To match the schematic. Then the threshold/decision voltage will become ~150mV,
which works fine according to my tests.
Best regards,
o.
> };
> };
>
>
> --
> 2.51.0
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
2025-09-21 8:04 ` [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer " Rudraksha Gupta via B4 Relay
@ 2025-09-21 13:10 ` Ondřej Jirman
2025-09-21 13:23 ` Ondřej Jirman
2025-09-21 21:07 ` Rudraksha Gupta
0 siblings, 2 replies; 13+ messages in thread
From: Ondřej Jirman @ 2025-09-21 13:10 UTC (permalink / raw)
To: guptarud
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Hi,
On Sun, Sep 21, 2025 at 01:04:20AM -0700, Rudraksha Gupta via B4 Relay wrote:
> From: Ondrej Jirman <megi@xff.cz>
>
> Pinephone Pro uses mpu6500.
>
> Signed-off-by: Ondrej Jirman <megi@xff.cz>
> Signed-off-by: Rudraksha Gupta <guptarud@gmail.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.
I have this in my tree https://codeberg.org/megi/linux/commit/d7cd2eab931e32fa94408a96d73b4e6c0616107a
Which is:
Signed-of-by: Leonardo G. Trombetta <lgtrombetta@gmx.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
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
2025-09-21 13:10 ` Ondřej Jirman
@ 2025-09-21 13:23 ` Ondřej Jirman
2025-09-21 21:07 ` Rudraksha Gupta
1 sibling, 0 replies; 13+ messages in thread
From: Ondřej Jirman @ 2025-09-21 13:23 UTC (permalink / raw)
To: guptarud, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Heiko Stuebner, devicetree, linux-arm-kernel, linux-rockchip,
linux-kernel
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@xff.cz>
> >
> > Pinephone Pro uses mpu6500.
> >
> > Signed-off-by: Ondrej Jirman <megi@xff.cz>
> > Signed-off-by: Rudraksha Gupta <guptarud@gmail.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@gmx.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
> >
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key
2025-09-21 11:20 ` Ondřej Jirman
@ 2025-09-21 21:06 ` Rudraksha Gupta
0 siblings, 0 replies; 13+ messages in thread
From: Rudraksha Gupta @ 2025-09-21 21:06 UTC (permalink / raw)
To: Ondřej Jirman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
Hello,
> So the correct fix here is to change both button thresholds to:
>
> Volume Down
>
> press-threshold-microvolt = <300000>;
>
> Volume Up
>
> press-threshold-microvolt = <2000>;
Thanks, addressed in v3!
Rudraksha
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
2025-09-21 13:10 ` Ondřej Jirman
2025-09-21 13:23 ` Ondřej Jirman
@ 2025-09-21 21:07 ` Rudraksha Gupta
2025-09-22 16:59 ` Ondřej Jirman
1 sibling, 1 reply; 13+ messages in thread
From: Rudraksha Gupta @ 2025-09-21 21:07 UTC (permalink / raw)
To: Ondřej Jirman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
Hello,
> 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.
This is where I sourced each of the commits:
- Add light/proximity sensor support
-
https://codeberg.org/megi/linux/commit/f171bc7013bc7ad3de9af817bfbcbfa548ebe01c
- Add accelerometer sensor support
-
https://codeberg.org/megi/linux/commit/b0bb7633e073a6760fa213b8c4a78ea2e73c7bf1
- Add magnetometer sensor support
-
https://codeberg.org/megi/linux/commit/2f7e67f451f16eaf15b81aa1dbdf126d54927d35
- Add mount-matrix for magnetometer
-
https://codeberg.org/megi/linux/commit/d7cd2eab931e32fa94408a96d73b4e6c0616107a
- Fix voltage threshold for volume down key
-
https://codeberg.org/megi/linux/commit/7c496a5cc27ed4e38b740f36c2d8b2c62f80ae54
I will add my sources to the cover letter moving forward.
> Looking at where the magnetometer is mounted, it's mounted on the
bottom side of
> the PCB (U29 chip):
> ...
> So based on that mount-matrix should be:
>
> mount-matrix =
> "0", "1", "0",
> "1", "0", "0",
> "0", "0", "-1";
Thanks, addressed in v3!
Thanks,
Rudraksha
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
2025-09-21 21:07 ` Rudraksha Gupta
@ 2025-09-22 16:59 ` Ondřej Jirman
2025-09-28 3:54 ` Rudraksha Gupta
0 siblings, 1 reply; 13+ messages in thread
From: Ondřej Jirman @ 2025-09-22 16:59 UTC (permalink / raw)
To: Rudraksha Gupta
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
devicetree, linux-arm-kernel, linux-rockchip, linux-kernel
Hi Rudraksha,
On Sun, Sep 21, 2025 at 02:07:03PM -0700, Rudraksha Gupta wrote:
> Hello,
>
> > 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.
>
> This is where I sourced each of the commits:
>
> - Add light/proximity sensor support
> - https://codeberg.org/megi/linux/commit/f171bc7013bc7ad3de9af817bfbcbfa548ebe01c
> - Add accelerometer sensor support
> - https://codeberg.org/megi/linux/commit/b0bb7633e073a6760fa213b8c4a78ea2e73c7bf1
> - Add magnetometer sensor support
> - https://codeberg.org/megi/linux/commit/2f7e67f451f16eaf15b81aa1dbdf126d54927d35
> - Add mount-matrix for magnetometer
> - https://codeberg.org/megi/linux/commit/d7cd2eab931e32fa94408a96d73b4e6c0616107a
> - Fix voltage threshold for volume down key
> - https://codeberg.org/megi/linux/commit/7c496a5cc27ed4e38b740f36c2d8b2c62f80ae54
>
> I will add my sources to the cover letter moving forward.
>
>
>
> > Looking at where the magnetometer is mounted, it's mounted on the bottom
> side of
> > the PCB (U29 chip):
> > ...
> > So based on that mount-matrix should be:
> >
> > mount-matrix =
> > "0", "1", "0",
> > "1", "0", "0",
> > "0", "0", "-1";
>
> Thanks, addressed in v3!
Well, it's not clear this will work as expected. Someone should at least test it
with some well working userspace sensor fusion program, that uses this
information, (along with the mount matrix for accelerometer/gyro) for eg.
compass feature or something like that.
Also I don't see this matrix in v3 patch set.
Did you test it? Any suggestions on what people actully use for sensor fusion on
Linux?
Regards,
o.
>
> Thanks,
> Rudraksha
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer sensor support
2025-09-22 16:59 ` Ondřej Jirman
@ 2025-09-28 3:54 ` Rudraksha Gupta
0 siblings, 0 replies; 13+ messages in thread
From: Rudraksha Gupta @ 2025-09-28 3:54 UTC (permalink / raw)
To: Ondřej Jirman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Heiko Stuebner, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
Hello Ondřej,
> Well, it's not clear this will work as expected. Someone should at least test it
> with some well working userspace sensor fusion program, that uses this
> information, (along with the mount matrix for accelerometer/gyro) for eg.
> compass feature or something like that.
I'm not aware of any compass app on Linux at the moment
> Also I don't see this matrix in v3 patch set.
https://lore.kernel.org/all/20250921-ppp_light_accel_mag_vol-down-v3-4-7af6651f77e4@gmail.com/
+ mount-matrix = + "0", "1", "0", + "1", "0", "0", + "0", "0", "-1";
> Did you test it? Any suggestions on what people actully use for sensor fusion on
> Linux?
Yep! I did brief testing, but I've put detailed testing below:
For the accelerometer, the screen orientation works correctly now.
Originally when tilting the ppp to the side, the screen would rotate to
the correct side. However, when the phone was held regularly in your
hand, the screen was upside down. With this patch series, it is no
longer the case
For the magnetometer, the command I ran was
```
#!/bin/sh
DEVICE="/sys/bus/iio/devices/iio:device2"
X=$(cat $DEVICE/in_magn_x_raw)
Y=$(cat $DEVICE/in_magn_y_raw)
Z=$(cat $DEVICE/in_magn_z_raw)
X_MIN=$X; X_MAX=$X
Y_MIN=$Y; Y_MAX=$Y
Z_MIN=$Z; Z_MAX=$Z
START_TIME=$(date +%s)
while [ $(($(date +%s) - START_TIME)) -lt 10 ]; do
X=$(cat $DEVICE/in_magn_x_raw)
Y=$(cat $DEVICE/in_magn_y_raw)
Z=$(cat $DEVICE/in_magn_z_raw)
[ "$X" -lt "$X_MIN" ] && X_MIN=$X
[ "$X" -gt "$X_MAX" ] && X_MAX=$X
[ "$Y" -lt "$Y_MIN" ] && Y_MIN=$Y
[ "$Y" -gt "$Y_MAX" ] && Y_MAX=$Y
[ "$Z" -lt "$Z_MIN" ] && Z_MIN=$Z
[ "$Z" -gt "$Z_MAX" ] && Z_MAX=$Z
done
echo "X_MIN: $X_MIN X_MAX: $X_MAX"
echo "Y_MIN: $Y_MIN Y_MAX: $Y_MAX"
echo "Z_MIN: $Z_MIN Z_MAX: $Z_MAX"
```
Tests:
# phone on a flat surface
top of the phone pointing north and bottom of phone pointing south: x
(between -2379 and -2263), y (between 109 and 207), z (between -2340 and
-2132)
top of the phone pointing south and bottom of phone pointing north: x
(between -1079 and -956), y (between -54 and 46), z (between -1831 and
-1621)
top of the phone pointing east and bottom of phone pointing west: x
(between -1587 and -1473), y (between -448 and -339), z (between -1850
and -1602)
top of the phone pointing west and bottom of phone pointing east: x
(between -1426 and -1300), y (between 554 and 661), z (between -1917 and
-1706)
# the following tests are where the phone is tilted at a 45 degree angle
and the top of phone is pointing up to the sky:
top of the phone pointing north and bottom of phone pointing south: x
(between -1300 and -1189), y (between 117 and 227), z (between -1819 and
-1614)
top of the phone pointing south and bottom of phone pointing north: x
(between -539 and -422), y (between 23 and 143), z (between -1160 and -922)
top of the phone pointing east and bottom of phone pointing west: x
(between -1038 and -915), y (between -408 and -313), z (between -1570
and -1345)
top of the phone pointing west and bottom of phone pointing east: x
(between -965 and -849), y (between 540 and 641), z (between -1542 and
-1336)
# the following tests are where the phone is tilted at a 45 degree angle
and the top of phone is pointing down to the ground:
top of the phone pointing north and bottom of phone pointing south: x
(between -2345 and -2237), y (between 80 and 189), z (between -1207 and
-971)
top of the phone pointing south and bottom of phone pointing north: x
(between -1805 and -1691), y (between 5 and 112), z (between -1896 and
-1651)
top of the phone pointing east and bottom of phone pointing west: x
(between -2127 and -2013), y (between 460 and 563), z (between -1621 and
-1378)
top of the phone pointing west and bottom of phone pointing east: x
(between -2158 and -2054), y (between -376 and -264), z (between -1540
and -1262)
I will put my testing in the commit itself moving forward
Thanks,
Rudraksha
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-09-28 3:54 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-21 8:04 [PATCH v2 0/5] Upstreaming Pinephone Pro Patches Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 1/5] arm64: dts: rk3399-pinephone-pro: Add light/proximity sensor support Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 2/5] arm64: dts: rk3399-pinephone-pro: Add accelerometer " Rudraksha Gupta via B4 Relay
2025-09-21 13:10 ` Ondřej Jirman
2025-09-21 13:23 ` Ondřej Jirman
2025-09-21 21:07 ` Rudraksha Gupta
2025-09-22 16:59 ` Ondřej Jirman
2025-09-28 3:54 ` Rudraksha Gupta
2025-09-21 8:04 ` [PATCH v2 3/5] arm64: dts: rk3399-pinephone-pro: Add magnetometer " Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 4/5] arm64: dts: rk3399-pinephone-pro: Add mount-matrix for magnetometer Rudraksha Gupta via B4 Relay
2025-09-21 8:04 ` [PATCH v2 5/5] arm64: dts: rk3399-pinephone-pro: Fix voltage threshold for volume down key Rudraksha Gupta via B4 Relay
2025-09-21 11:20 ` Ondřej Jirman
2025-09-21 21:06 ` Rudraksha Gupta
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).