xref: /linux/scripts/dtc/include-prefixes/arm64/ti/k3-am69-aquila-panel-cap-touch-7inch-dsi.dtso (revision 67f8bc848ee31831336bd478e57d2f993551902e)
1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Copyright (c) Toradex
4 *
5 * Toradex Capacitive Touch Display 7" on Aquila DSI_1.
6 * Used on Clover Board (J12), DSI_1 is exposed via a FFC/FPC connector.
7 *
8 * https://developer.toradex.com/hardware/accessories/displays/capacitive-touch-display-7inch-dsi
9 * https://www.toradex.com/accessories/capacitive-touch-display-7-inch-dsi
10 */
11
12/dts-v1/;
13/plugin/;
14
15#include <dt-bindings/gpio/gpio.h>
16#include <dt-bindings/interrupt-controller/irq.h>
17
18&{/} {
19	backlight_pwm3: backlight-pwm3 {
20		compatible = "pwm-backlight";
21		brightness-levels = <0 45 63 88 119 158 203 255>;
22		default-brightness-level = <4>;
23		/* Aquila PWM_3_DSI (AQUILA B46) */
24		pwms = <&main_ehrpwm5 0 6666667 0>;
25	};
26
27	panel-lvds-bridge {
28		compatible = "riverdi,rvt70hslnwca0", "panel-lvds";
29		backlight = <&backlight_pwm3>;
30		data-mapping = "vesa-24";
31		height-mm = <86>;
32		width-mm = <154>;
33
34		panel-timing {
35			clock-frequency = <51200000>;
36			de-active = <1>;
37			hactive = <1024>;
38			hback-porch = <100 100 100>;
39			hfront-porch = <16 160 216>;
40			hsync-active = <0>;
41			hsync-len = <1 60 140>;
42			pixelclk-active = <1>;
43			vactive = <600>;
44			vback-porch = <13 13 13>;
45			vfront-porch = <1 12 127>;
46			vsync-active = <0>;
47			vsync-len = <1 10 20>;
48		};
49
50		port {
51			panel_lvds_bridge_in: endpoint {
52				remote-endpoint = <&dsi_lvds_bridge_out>;
53			};
54		};
55	};
56};
57
58&dphy_tx0 {
59	status = "okay";
60};
61
62&dsi0 {
63	status = "okay";
64};
65
66&dsi0_ports {
67	#address-cells = <1>;
68	#size-cells = <0>;
69
70	port@0 {
71		reg = <0>;
72
73		dsi0_out: endpoint {
74			remote-endpoint = <&dsi_lvds_bridge_in>;
75		};
76	};
77
78	port@1 {
79		reg = <1>;
80
81		dsi0_in: endpoint {
82			remote-endpoint = <&dpi2_out>;
83		};
84	};
85};
86
87&dss_ports {
88	#address-cells = <1>;
89	#size-cells = <0>;
90
91	port@2 {
92		reg = <2>;
93
94		dpi2_out: endpoint {
95			remote-endpoint = <&dsi0_in>;
96		};
97	};
98};
99
100/* Aquila PWM_3_DSI */
101&main_ehrpwm5 {
102	status = "okay";
103};
104
105/* Aquila I2C_3_DSI1 */
106&main_i2c0 {
107	#address-cells = <1>;
108	#size-cells = <0>;
109
110	status = "okay";
111
112	bridge@2c {
113		compatible = "ti,sn65dsi83";
114		reg = <0x2c>;
115		pinctrl-names = "default";
116		pinctrl-0 = <&pinctrl_gpio_20_dsi_1>;
117		/* Aquila GPIO_20_DSI_1 (AQUILA B45) */
118		enable-gpios = <&main_gpio0 18 GPIO_ACTIVE_HIGH>;
119
120		ports {
121			#address-cells = <1>;
122			#size-cells = <0>;
123
124			port@0 {
125				reg = <0>;
126
127				dsi_lvds_bridge_in: endpoint {
128					remote-endpoint = <&dsi0_out>;
129					data-lanes = <1 2 3 4>;
130				};
131			};
132
133			port@2 {
134				reg = <2>;
135
136				dsi_lvds_bridge_out: endpoint {
137					remote-endpoint = <&panel_lvds_bridge_in>;
138				};
139			};
140		};
141	};
142
143	touchscreen@41 {
144		compatible = "ilitek,ili2132";
145		reg = <0x41>;
146		pinctrl-names = "default";
147		pinctrl-0 = <&pinctrl_gpio_17_dsi_1>, <&pinctrl_gpio_18_dsi_1>;
148		/* Aquila GPIO_17_DSI_1 (AQUILA B42) */
149		interrupt-parent = <&main_gpio0>;
150		/*
151		 * Data-ready pulse is ~200 us; either edge can be used,
152		 * use the rising edge because the falling edge is noisy.
153		 */
154		interrupts = <12 IRQ_TYPE_EDGE_RISING>;
155		/* Aquila GPIO_18_DSI_1 (AQUILA B43) */
156		reset-gpios = <&main_gpio0 31 GPIO_ACTIVE_LOW>;
157	};
158};
159