On Sun, Mar 01, 2026 at 11:29:19PM +0100, Paul Adam via B4 Relay wrote: > From: Paul Adam <[email protected]> > > Add an initial device tree for Wiko PULP 4G. > Includes support for: > - UART > - USB (no OTG) > - Internal storage > - MicroSD > - Volume keys + Power button > - Touchscreen > - Backlight > - Accelerometer: Invensense MPU6880 > - Magnetometer: Asahi Kasei AK09911 > - Hall sensor: Rohm BU52021HFV > - Proximity sensor > - Vibrator > - Earpiece > - Microphone 1 > - Headphones > - Wifi > - Bluetooth > - GPU > > Signed-off-by: Paul Adam <[email protected]> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > arch/arm64/boot/dts/qcom/msm8916-wiko-chuppito.dts | 356 > +++++++++++++++++++++ > 2 files changed, 357 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/Makefile > b/arch/arm64/boot/dts/qcom/Makefile > index f80b5d9cf1e8..5a3a9a823503 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -75,6 +75,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-rossa.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-serranove.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-thwc-uf896.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-thwc-ufi001c.dtb > +dtb-$(CONFIG_ARCH_QCOM) += msm8916-wiko-chuppito.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86518.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86528.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb > diff --git a/arch/arm64/boot/dts/qcom/msm8916-wiko-chuppito.dts > b/arch/arm64/boot/dts/qcom/msm8916-wiko-chuppito.dts > new file mode 100644 > index 000000000000..dd56e1baeb4b > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/msm8916-wiko-chuppito.dts > @@ -0,0 +1,356 @@ > [...] > +&blsp_i2c2 { > + status = "okay"; > + > + magnetometer@c { > + compatible = "asahi-kasei,ak09911"; > + reg = <0x0c>; > + vdd-supply = <&pm8916_l17>; > + vid-supply = <&pm8916_l6>; > + reset-gpios = <&tlmm 120 GPIO_ACTIVE_LOW>; > + pinctrl-0 = <&mag_reset_default>; > + pinctrl-1 = <&mag_reset_suspend>; > + pinctrl-names = "default", "suspend";
Did you mean "sleep" instead of "suspend" here? By default, there is "default", "init", "idle" and "sleep" [1], although drivers can request custom pinctrl states as well. Note that even with "sleep", the pinctrl state will be rarely used on Linux. Drivers need to explicitly call pinctrl_pm_select_sleep_state() to trigger these, but only few drivers do that [2]. From a quick look, I suspect that only the &sdhc_2 sleep pinctrl here is currently used on Linux. That doesn't mean that you can't add these pinctrl states (the DT is not supposed to be specific to one particular operating system), but it does mean that most of these are effectively untested right now. I would personally omit them. [1]: https://elixir.bootlin.com/linux/v7.0-rc1/source/include/linux/pinctrl/pinctrl-state.h#L36 [2]: https://elixir.bootlin.com/linux/v7.0-rc1/A/ident/pinctrl_pm_select_sleep_state > + mount-matrix = "1", "0", "0", > + "0", "1", "0", > + "0", "0", "1"; > + }; > + > + proximity@48 { > + compatible = "sensortek,stk3310"; > + reg = <0x48>; > + interrupts-extended = <&tlmm 113 IRQ_TYPE_EDGE_FALLING>; > + pinctrl-0 = <&proximity_int_default>; > + pinctrl-1 = <&proximity_int_suspend>; > + pinctrl-names = "default", "suspend"; Same here. > + }; > + > + imu@68 { > + compatible = "invensense,mpu6880"; > + reg = <0x68>; > + interrupts-extended = <&tlmm 115 IRQ_TYPE_EDGE_FALLING>; > + vdd-supply = <&pm8916_l17>; > + vddio-supply = <&pm8916_l6>; > + pinctrl-0 = <&imu_int_default>; > + pinctrl-1 = <&imu_int_suspend>; > + pinctrl-names = "default", "suspend"; And here. > + mount-matrix = "0", "-1", "0", > + "-1", "0", "0", > + "0", "0", "-1"; > + }; > +}; > + > +&blsp_i2c5 { > + status = "okay"; > + > + touchscreen@39 { > + compatible = "syna,rmi4-i2c"; > + reg = <0x39>; > + interrupts-extended = <&tlmm 13 IRQ_TYPE_EDGE_FALLING>; > + vdd-supply = <&pm8916_l17>; > + vio-supply = <&pm8916_l6>; > + pinctrl-0 = <&touchscreen_default>; > + pinctrl-1 = <&touchscreen_suspend>; > + pinctrl-names = "default", "suspend"; And here. > + #address-cells = <1>; > + #size-cells = <0>; > + syna,startup-delay-ms = <100>; > + syna,reset-delay-ms = <160>; > + > + rmi4-f01@1 { > + reg = <0x1>; > + syna,nosleep-mode = <1>; > + }; > + > + rmi4-f11@11 { > + reg = <0x11>; > + syna,sensor-type = <1>; > + }; > + }; > +}; > + > [...] > +&pm8916_rpm_regulators { > + pm8916_l17: l17 { > + regulator-min-microvolt = <2850000>; > + regulator-max-microvolt = <2850000>; > + regulator-always-on; Does this need to be always-on? > + }; > +}; > + > [...] > +&sdhc_2 { > + pinctrl-0 = <&sdc2_default>, <&sdc2_cd_default>; > + pinctrl-1 = <&sdc2_sleep>, <&sdc2_cd_default>; > + pinctrl-names = "default", "sleep"; This is OK, drivers/mmc/host/sdhci-msm.c selects the sleep state. > + cd-gpios = <&tlmm 38 GPIO_ACTIVE_HIGH>; > + > + status = "okay"; > +}; > [...] > +&tlmm { > [...] > + imu_int_default: imu-int-default-state { > + pins = "gpio115"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + imu_int_suspend: imu-int-suspend-state { > + pins = "gpio115"; > + function = "gpio"; > + drive-strength = <2>; > + }; imu_int_default has a bias, but imu_int_suspend does not, is this intended? I would just drop these "suspend" states, as I mentioned above. Thanks, Stephan

