Touchscreen hardware components

Revision as of 13:43, 23 October 2023 by Registered User (→‎Linux driver)
Applicable for STM32MP13x lines, STM32MP15x lines, STM32MP25x lines


1. Article purpose[edit source]

The purpose of this article is to:

  • list the touchscreen hardware components that might be integrated in the different boards
  • link these components to the corresponding software framework(s)
  • point to the datasheet(s) of these components
  • explain, when necessary, how to configure these components

2. Software frameworks[edit source]

Domain Peripheral Software components Comment
OP-TEE Linux STM32Cube
Visual and Inputs Goodix GT9147 Inputs framework[1] Touchscreen input driver
Visual and Inputs FocalTech FT6236 Inputs framework[1] Touchscreen input driver

3. Goodix GT9147[edit source]

The Goodix GT9147 is a single-layer multi-touch capacitive touch controller driver.

For details and the datasheet please contact the GT9147 driver provider.

3.1. Linux driver[edit source]

Bindings: Documentation/devicetree/bindings/input/touchscreen/goodix.yaml

Sources: drivers/input/touchscreen/goodix.c

Devicetree example: arch/arm/boot/dts/stm32mp157d-ev1.dts

...
&dsi {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			dsi_in: endpoint {
				remote-endpoint = <&ltdc_ep0_out>;
			};
		};

		port@1 {
			reg = <1>;
			dsi_out: endpoint {
				remote-endpoint = <&dsi_panel_in>;
			};
		};
	};

	panel_dsi: panel-dsi@0 {
		compatible = "raydium,rm68200";
		reg = <0>;
		reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>;
		backlight = <&panel_backlight>;
		power-supply = <&v3v3>;
		status = "okay";

		port {
			dsi_panel_in: endpoint {
				remote-endpoint = <&dsi_out>;
			};
		};
	};
};


&i2c2 {
...
	stmfx: stmfx@42 {
		compatible = "st,stmfx-0300";
		reg = <0x42>;
		interrupts = <8 IRQ_TYPE_EDGE_RISING>;
		interrupt-parent = <&gpioi>;
		vdd-supply = <&v3v3>;

		stmfx_pinctrl: pinctrl {
			compatible = "st,stmfx-0300-pinctrl";
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
			gpio-ranges = <&stmfx_pinctrl 0 0 24>;

			goodix_pins: goodix {
				pins = "gpio14";
				bias-pull-down;
			};

			joystick_pins: joystick-pins {
				pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
				bias-pull-down;
			};
		};
	};

	gt9147: goodix-ts@5d {
		compatible = "goodix,gt9147";
		reg = <0x5d>;
		panel = <&panel_dsi>;
		pinctrl-0 = <&goodix_pins>;
		pinctrl-names = "default";
		AVDD28-supply = <&v3v3>;
		VDDIO-supply = <&v3v3>;
		status = "okay";

		interrupts = <14 IRQ_TYPE_EDGE_RISING>;
		interrupt-parent = <&stmfx_pinctrl>;
	};
};

4. FocalTech FT6236[edit source]

The FocalTech FT6236 is a self-capacitive touch panel controller driver.

For details and the datasheet please contact the FT6236 driver provider.

4.1. Linux driver[edit source]

Bindings: Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.yaml

Sources: drivers/input/touchscreen/edt-ft5x06.c

5. References[edit source]

  1. 1.0 1.1 Linux Input Subsystem kernel API and userspace API