[PATCH v5 6/6] arm64: dts: mediatek: mt8188-geralt-ciri: Add the touchscreen
From: Michał Kopeć
Date: Sat Oct 03 2026 - 10:28:45 EST
Ciri uses the touch function of its Himax HX83102J TDDI controller,
connected over SPI1. It shares the analog supplies and the reset with
the panel, so describe those and follow the panel for power sequencing.
The controller has no flash; the firmware is loaded from a file that
depends on the panel: himax_i2chid_1002.bin for the BOE panel and
himax_i2chid_1003.bin for the IVO panel, as on ChromeOS.
Signed-off-by: Michał Kopeć <michal@nozomi.space>
---
.../dts/mediatek/mt8188-geralt-ciri-sku1.dts | 4 +++
.../dts/mediatek/mt8188-geralt-ciri-sku3.dts | 4 +++
.../dts/mediatek/mt8188-geralt-ciri-sku5.dts | 4 +++
.../dts/mediatek/mt8188-geralt-ciri-sku7.dts | 4 +++
.../boot/dts/mediatek/mt8188-geralt-ciri.dtsi | 33 +++++++++++++++++++
5 files changed, 49 insertions(+)
diff --git a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku1.dts b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku1.dts
index ef5ea9d12b1de..6377354440d68 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku1.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku1.dts
@@ -57,3 +57,7 @@ codec {
};
};
};
+
+&touchscreen {
+ firmware-name = "himax_i2chid_1003.bin";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku3.dts b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku3.dts
index 524f7f0064c1a..2a51c610758f7 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku3.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku3.dts
@@ -30,3 +30,7 @@ &sound {
"Left Spk", "Front Left BE_OUT",
"Right Spk", "Front Right BE_OUT";
};
+
+&touchscreen {
+ firmware-name = "himax_i2chid_1003.bin";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku5.dts b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku5.dts
index bf87201ccf273..8fb0036aa14d0 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku5.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku5.dts
@@ -70,3 +70,7 @@ codec {
};
};
};
+
+&touchscreen {
+ firmware-name = "himax_i2chid_1003.bin";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku7.dts b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku7.dts
index 825015b452d59..2bd178116423b 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku7.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri-sku7.dts
@@ -46,3 +46,7 @@ codec {
};
};
};
+
+&touchscreen {
+ firmware-name = "himax_i2chid_1003.bin";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri.dtsi b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri.dtsi
index 6815c435a57e1..e611fb73ddb01 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8188-geralt-ciri.dtsi
@@ -121,6 +121,27 @@ codec {
};
};
+&spi1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ touchscreen: touchscreen@0 {
+ compatible = "himax,hx83102j";
+ reg = <0>;
+ spi-max-frequency = <12500000>;
+ interrupts-extended = <&pio 143 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&touchscreen_pins>;
+ reset-gpios = <&pio 5 GPIO_ACTIVE_LOW>;
+ display-reset-gpios = <&pio 25 GPIO_ACTIVE_LOW>;
+ vccd-supply = <&mt6359_vm18_ldo_reg>;
+ vsp-supply = <&ppvar_mipi_disp_avdd>;
+ vsn-supply = <&ppvar_mipi_disp_avee>;
+ panel = <&dsi_panel>;
+ firmware-name = "himax_i2chid_1002.bin";
+ };
+};
+
&pio {
gpio-line-names =
"GSC_AP_INT_ODL",
@@ -313,4 +334,16 @@ pins-en-spkr {
pinmux = <PINMUX_GPIO111__FUNC_B_GPIO111>;
};
};
+
+ touchscreen_pins: touchscreen-pins {
+ pins-int-odl {
+ pinmux = <PINMUX_GPIO143__FUNC_B_GPIO143>;
+ input-enable;
+ };
+
+ pins-rst-l {
+ pinmux = <PINMUX_GPIO5__FUNC_B_GPIO5>;
+ output-high;
+ };
+ };
};
--
2.55.0