Commit 3ab8216d authored by Konrad Dybcio's avatar Konrad Dybcio Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: sdm845-tama: Add Synaptics Touchscreen



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.

Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@somainline.org>
Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230313-topic-tama_disp-v3-2-2b1567c039d7@linaro.org
parent 5dcc6587
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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";
+66 −2
Original line number Diff line number Diff line
@@ -402,10 +402,42 @@ &gcc {
};

&i2c5 {
	status = "okay";
	clock-frequency = <400000>;
	status = "okay";

	touchscreen: touchscreen@2c {
		compatible = "syna,rmi4-i2c";
		reg = <0x2c>;

		interrupts-extended = <&tlmm 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-0 = <&ts_default>;
		pinctrl-1 = <&ts_sleep>;
		pinctrl-names = "default", "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 {
@@ -558,6 +590,38 @@ sde_te_active_sleep: sde-te-active-sleep-state {
		drive-strength = <2>;
		bias-pull-down;
	};

	ts_default: ts-default-state {
		reset-pins {
			pins = "gpio99";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-up;
		};

		int-pins {
			pins = "gpio125";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-up;
		};
	};

	ts_sleep: ts-sleep-state {
		reset-pins {
			pins = "gpio99";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-down;
		};

		int-pins {
			pins = "gpio125";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-down;
		};
	};
};

&uart6 {