Hi!
I have an OrangePi3 (not Zero!) running Armbian (H6), with a TFT ILI9486 display connected via the 26-pin header. The screen works fine, but the XPT2046 touch controller does not initialize.
Here’s the situation:
CS0 on PH5, DC on PD16, RESET on PD21.
XPT2046 (CS1) on PL8, IRQ on PD24.
I tried adding XPT2046 to the overlay with all parameters configured (ti,x/y-min/max, pressure, swap-xy, etc.).
The overlay compiles successfully, but when loading the module it says:
ads7846 spi0.1: probe with driver ads7846 failed with error -22
I also tried loading the ads7846 module with parameters via modprobe — all parameters are ignored because the driver only supports configuration via Device Tree.
Here is my current overlay:
/dts-v1/;
/plugin/;
/ {
compatible = "allwinner,sun50i-h6";
fragment@0 {
target = <&spi1>;
__overlay__ {
status = "okay";
cs-gpios = <&pio 7 3 0>;
display: display@0 {
compatible = "ilitek,ili9341";
reg = <0>;
pinctrl-names = "default";
spi-max-frequency = <20000000>;
txbuflen = <65536>;
rotate = <90>;
bgr = <0>;
fps = <30>;
buswidth = <8>;
regwidth = <16>;
height = <480>;
width = <320>;
dc-gpios = <&pio 3 16 0>;
reset-gpios = <&pio 3 21 1>;
debug = <3>;
init = <0x10000b0 0x00 // Interface Mode Control
0x1000011 // Sleep Out
0x20000ff // Delay (255ms)
0x10000C0 0x0D 0x0D // Power Control 1
0x10000C1 0x43 // Power Control 2
0x10000C5 0x00 0x48 0x80 // VCOM Control 1
0x10000C7 0x00 // VCOM Control 2
0x1000036 0x28 // Memory Access Control (Rotação)
0x100003A 0x55 // Pixel Format Set (16bit)
0x10000B1 0xB0 0x11 // Frame Rate Control
0x10000F0 0x01 // Enable Extended Comand Set
0x10000F6 0x00 0x01 0x32 // SPI ilInterface Control
0x1000026 0x01 // Gamma Set
0x10000E0 0x0F 0x31 0x2B 0x0C 0x0E 0x08 0x4E 0xF1 0x37 0x07 0x10 0x03 0x0E 0x09 0x00 // Positive Gamma Correction
0x10000E1 0x00 0x0E 0x14 0x03 0x11 0x07 0x31 0xC1 0x48 0x08 0x0F 0x0C 0x31 0x36 0x0F // Negative Gamma Correction
0x10000B6 0x02 0x02 0x3B // Display Function Control
0x1000011 // Sleep Out
0x20000ff // Delay (255ms)
0x1000029>; // Display ON
};
/* --- ADS7846 (XPT2046) --- */
ads7846: ads7846@1 {
compatible = "ti,ads7846";
reg = <1>;
pinctrl-names = "default";
spi-max-frequency = <1000000>;
interrupt-parent = <&pio>;
interrupts = <3 24 2>;
pendown-gpio = <&pio 3 24 1>;
cs-gpios = <&pio 11 8 0>;
/* OPTIONS */
ti,x-min = /bits/ 16 <0>;
ti,y-min = /bits/ 16 <0>;
ti,x-max = /bits/ 16 <0xFFF>;
ti,y-max = /bits/ 16 <0xFFF>;
ti,pressure-min = /bits/ 16 <0>;
ti,pressure-max = /bits/ 16 <0xFFF>;
ti,x-plate-ohms = /bits/ 16 <400>;
ti,swap-xy = <1>;
};
};
};
};
Could anyone advise how to properly connect XPT2046 so that PD24 is used as IRQ? Is there a working example overlay for TFT ILI9486 + XPT2046 on OrangePi3 / H6? Or has anyone managed to use the touch controller via a module without overlay? Or is that simply impossible on this kernel?
I would really appreciate any working examples or advice!