* Surface Pro 12in (X1P42100): touchscreen variant, different GPIOs
@ 2026-08-04 13:05 François Roux
0 siblings, 0 replies; only message in thread
From: François Roux @ 2026-08-04 13:05 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio
Cc: Harrison van der Byl, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel,
François Roux
Hi,
Reporting a hardware variant rather than sending a patch, because I do
not know how you would want it discriminated and a naive patch would
break the other units.
x1p42100-microsoft-sp12.dts describes the touchscreen as:
/* ILIT2911 or GTCH1563 */
touchscreen@16 {
compatible = "hid-over-i2c";
reg = <0x16>;
hid-descr-addr = <0x1>;
interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>;
vddl-supply = <&vreg_l15b_1p8>;
pinctrl-0 = <&ts0_default>;
pinctrl-names = "default";
};
ts0_default: ts0-default-state {
int-n-pins { pins = "gpio51"; ... };
reset-n-pins { pins = "gpio52"; ... };
};
My unit has neither of those controllers, and different pins.
What is on this machine
=======================
hid-over-i2c 04F3:4377 Touchscreen
04F3 is ELAN. It sits at the same address (0x16) on the same bus, but
the interrupt and reset lines differ:
upstream DTS this unit
interrupt GPIO 51 38
reset GPIO 52 48
Both descriptions are internally consistent -- the interrupt property
and the pinctrl state agree with each other in each case -- so this is
not a typo in either. It is a genuinely different board wiring.
The vendor DTB shipped with Windows on this unit uses 38/48, and it
works: touchscreen, pen and multitouch all register. Booting the
upstream DTS on this machine would leave the touchscreen dead, since the
driver would be waiting on a pin the controller does not drive.
The unit also has `wakeup-source` on that node in the vendor DTB, which
upstream does not carry. I have not tested whether it matters, so I
mention it only for completeness.
Machine identification
======================
sys_vendor Microsoft Corporation
product_name Surface Pro 12in 1st Ed with Snapdragon
product_sku Surface_Pro_12in_1st_Ed_with_Snapdragon_2110
product_version 124I:00125T:000M:0000000F:0B:10C:08M:00D:00U:00T:2R:10
bios_version 9.166.235
DT compatible microsoft,surface-pro-12in / qcom,x1p42100
Note the DT compatible above is from the vendor DTB, which predates the
rename to `microsoft,sp12`.
Why I am not sending a patch
============================
Both variants would advertise the same compatible, and the DTB is
selected before Linux runs, so a second DTS would need something the
bootloader can key on. `product_sku` ends in `2110` here and might be
that discriminator, but I have exactly one unit and no way to confirm it
distinguishes anything.
Changing the GPIOs in place would obviously break whichever units the
current values were written for.
So: how would you like this handled? A separate board DTS, a runtime
quirk, or something else entirely? I am happy to write and test whatever
shape you prefer, and to dump any register or property from this
machine.
Environment: linux-next next-20260626 on Arch Linux ARM (aarch64), with
the vendor DTB rather than the upstream one, for exactly this reason.
Thanks,
François Roux
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-04 13:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-04 13:05 Surface Pro 12in (X1P42100): touchscreen variant, different GPIOs François Roux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox