On 30/09/2022 21:10, Konrad Dybcio wrote: > Add required pins and RMI4 node to the common DT and remove it > from Akatsuki, as it uses a different touch. > > Since the panels are super high tech proprietary incell, they > need to be handled with very precise timings. As such the panel > driver sets up the power rails and GPIOs and the touchscreen > driver *has to* probe afterwards. > Thank you for your patch. There is something to discuss/improve. > Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxx> > --- > .../qcom/sdm845-sony-xperia-tama-akatsuki.dts | 3 + > .../dts/qcom/sdm845-sony-xperia-tama.dtsi | 69 ++++++++++++++++++- > 2 files changed, 70 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama-akatsuki.dts b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama-akatsuki.dts > index 2a16305ac5da..5c5949a51184 100644 > --- a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama-akatsuki.dts > +++ b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama-akatsuki.dts > @@ -7,6 +7,9 @@ > > #include "sdm845-sony-xperia-tama.dtsi" > > +/* XZ3 uses an Atmel touchscreen instead. */ > +/delete-node/ &touchscreen; > + > / { > model = "Sony Xperia XZ3"; > compatible = "sony,akatsuki-row", "qcom,sdm845"; > diff --git a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi > index ac8eb59ed010..809a6d7e739b 100644 > --- a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi > +++ b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi > @@ -375,10 +375,43 @@ &gcc { > }; > > &i2c5 { > - status = "okay"; > clock-frequency = <400000>; > + status = "okay"; > + > + touchscreen: touchscreen@2c { > + compatible = "syna,rmi4-i2c"; > + reg = <0x2c>; > + > + interrupt-parent = <&tlmm>; > + interrupts = <125 IRQ_TYPE_EDGE_FALLING>; > + vdd-supply = <&vreg_l14a_1p8>; > + /* > + * This is a blatant abuse of OF, but the panel driver *needs* > + * to probe first, as the power/gpio switching needs to be precisely > + * timed in order for both the display and touch panel to function properly. > + */ > + incell-supply = <&panel>; > + > + syna,reset-delay-ms = <220>; > + syna,startup-delay-ms = <1000>; > + > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&ts_default>; > + pinctrl-1 = <&ts_sleep>; > > - /* Synaptics touchscreen @ 2c, 3c */ > + #address-cells = <1>; > + #size-cells = <0>; > + > + rmi4-f01@1 { > + reg = <0x01>; > + syna,nosleep-mode = <1>; > + }; > + > + rmi4-f12@12 { > + reg = <0x12>; > + syna,sensor-type = <1>; > + }; > + }; > }; > > &i2c10 { > @@ -497,6 +530,38 @@ sde_te_active_sleep: sde-te-active-sleep-state { > drive-strength = <2>; > bias-pull-down; > }; > + > + ts_default: ts-default-state { > + reset-pin { "-pins" suffix, so "reset-pins" here and further. Best regards, Krzysztof