Most LCD displays now have embedded touch screen controllers that can be interfaced through I2C or SPI buses. The ConnectCore MP15 Development Kit makes use of device tree overlays to support: * Goodix touch controller for the AUO 10.1" LVDS LCD display, connected through port I2C2. * Fusion touch controller for Fusion 7" (parallel) and Fusion 10.1" (LVDS) LCD displays, connected through port I2C2.

Kernel configuration

You can manage the touch screen drivers support through the kernel configuration:

  • Goodix I2C touchscreen (CONFIG_TOUCHSCREEN_GOODIX)

  • Fusion I2C touchscreen (CONFIG_TOUCHSCREEN_FUSION_7_10)

These kernel configuration options are enabled as built-in on the default ConnectCore MP15 kernel configuration file.

Kernel driver

The driver for the touch screen interface is located at:

File Description

drivers/input/touchscreen/goodix.c

Goodix Touchscreen driver

drivers/input/touchscreen/fusion.c

Fusion Touchscreen driver

Device tree bindings and customization

The Goodix touch screen device tree binding is documented at Documentation/devicetree/bindings/input/touchscreen/goodix.yaml

Definition of the Goodix touch screen controller

ConnectCore MP15 Development Kit device tree
&i2c2 {
	...

	/*
	 * An inconsistent reset sequence makes
	 * the Goodix display's touch controller respond to one of two I2C
	 * addresses: 0x14 and 0x5D. To make sure the touchscreen
	 * works every time, the touch controller's description must
	 * be duplicated for both addresses.
	 */
	goodix_touch: gt911@14 {
		compatible = "goodix,gt9271";
		reg = <0x14>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_goodix_touch>;
		interrupt-parent = <&gpio5>;
		interrupts = <2 IRQ_TYPE_EDGE_RISING>;
		irq-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&mca_ioexp_gpio 29 GPIO_ACTIVE_HIGH>;
		skip-firmware-request;
		reload-fw-on-resume;
		status = "disabled";
	};

	goodix_touch2: gt911@5d {
		compatible = "goodix,gt9271";
		reg = <0x5d>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_goodix_touch>;
		interrupt-parent = <&gpio5>;
		interrupts = <2 IRQ_TYPE_EDGE_RISING>;
		irq-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
		skip-firmware-request;
		reload-fw-on-resume;
		status = "disabled";
	};

	...
};

The touch screen devices are linked to their corresponding LCD displays. Since these are optional peripherals, you must enable the corresponding device tree overlay. Check Device tree files and overlays for reference.