blob: f0ce897b9d5c4327170a5e40c75a85d1d6528256 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright 2012 Free Electrons
4 */
5
6/*
7 * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
8 * need to include the CFA-10036 DTS.
9 */
10#include "imx28-cfa10036.dts"
11
12/ {
13 model = "Crystalfontz CFA-10049 Board";
14 compatible = "crystalfontz,cfa10049", "crystalfontz,cfa10036", "fsl,imx28";
15
16 i2cmux {
17 compatible = "i2c-mux-gpio";
18 #address-cells = <1>;
19 #size-cells = <0>;
20 pinctrl-names = "default";
21 pinctrl-0 = <&i2cmux_pins_cfa10049>;
22 mux-gpios = <&gpio1 22 0 &gpio1 23 0>;
23 i2c-parent = <&i2c1>;
24
25 i2c@0 {
26 #address-cells = <1>;
27 #size-cells = <0>;
28 reg = <0>;
29
30 adc0: nau7802@2a {
31 compatible = "nuvoton,nau7802";
32 reg = <0x2a>;
33 nuvoton,vldo = <3000>;
34 };
35 };
36
37 i2c@1 {
38 #address-cells = <1>;
39 #size-cells = <0>;
40 reg = <1>;
41
42 adc1: nau7802@2a {
43 compatible = "nuvoton,nau7802";
44 reg = <0x2a>;
45 nuvoton,vldo = <3000>;
46 };
47 };
48
49 i2c@2 {
50 #address-cells = <1>;
51 #size-cells = <0>;
52 reg = <2>;
53
54 adc2: nau7802@2a {
55 compatible = "nuvoton,nau7802";
56 reg = <0x2a>;
57 nuvoton,vldo = <3000>;
58 };
59 };
60
61 i2c@3 {
62 reg = <3>;
63 #address-cells = <1>;
64 #size-cells = <0>;
65
66 pca9555: pca9555@20 {
67 compatible = "nxp,pca9555";
68 pinctrl-names = "default";
69 pinctrl-0 = <&pca_pins_cfa10049>;
70 interrupt-parent = <&gpio2>;
71 interrupts = <19 0x2>;
72 gpio-controller;
73 #gpio-cells = <2>;
74 interrupt-controller;
75 #interrupt-cells = <2>;
76 reg = <0x20>;
77 };
78 };
79 };
80
81 reg_usb1_vbus: regulator-0 {
82 compatible = "regulator-fixed";
83 pinctrl-names = "default";
84 pinctrl-0 = <&usb_pins_cfa10049>;
85 regulator-name = "usb1_vbus";
86 regulator-min-microvolt = <5000000>;
87 regulator-max-microvolt = <5000000>;
88 gpio = <&gpio0 7 1>;
89 };
90
91 spi-2 {
92 compatible = "spi-gpio";
93 pinctrl-names = "default";
94 pinctrl-0 = <&spi2_pins_cfa10049>;
95 status = "okay";
96 sck-gpios = <&gpio2 16 0>;
97 mosi-gpios = <&gpio2 17 0>;
98 miso-gpios = <&gpio2 18 0>;
99 cs-gpios = <&gpio3 5 0>;
100 num-chipselects = <1>;
101 #address-cells = <1>;
102 #size-cells = <0>;
103
104 hx8357: hx8357@0 {
105 compatible = "himax,hx8357b", "himax,hx8357";
106 reg = <0>;
107 spi-max-frequency = <100000>;
108 spi-cpol;
109 spi-cpha;
110 gpios-reset = <&gpio3 30 0>;
111 im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>;
112 };
113 };
114
115 spi-3 {
116 compatible = "spi-gpio";
117 pinctrl-names = "default";
118 pinctrl-0 = <&spi3_pins_cfa10049>;
119 status = "okay";
120 sck-gpios = <&gpio0 24 0>;
121 mosi-gpios = <&gpio0 28 0>;
122 cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>;
123 num-chipselects = <3>;
124 #address-cells = <1>;
125 #size-cells = <0>;
126
127 gpio5: gpio5@0 {
128 compatible = "fairchild,74hc595";
129 gpio-controller;
130 #gpio-cells = <2>;
131 reg = <0>;
132 registers-number = <2>;
133 spi-max-frequency = <100000>;
134 };
135
136 gpio6: gpio6@1 {
137 compatible = "fairchild,74hc595";
138 gpio-controller;
139 #gpio-cells = <2>;
140 reg = <1>;
141 registers-number = <4>;
142 spi-max-frequency = <100000>;
143 };
144
145 dac0: dh2228@2 {
146 compatible = "rohm,dh2228fv";
147 reg = <2>;
148 spi-max-frequency = <100000>;
149 };
150 };
151
152 gpio-keys {
153 compatible = "gpio-keys";
154 pinctrl-names = "default";
155 pinctrl-0 = <&rotary_btn_pins_cfa10049>;
156
157 rotary-button {
158 label = "rotary_button";
159 gpios = <&gpio3 26 1>;
160 debounce-interval = <10>;
161 linux,code = <28>;
162 };
163 };
164
165 rotary {
166 compatible = "rotary-encoder";
167 pinctrl-names = "default";
168 pinctrl-0 = <&rotary_pins_cfa10049>;
169 gpios = <&gpio3 24 1>, <&gpio3 25 1>;
170 linux,axis = <1>; /* REL_Y */
171 rotary-encoder,relative-axis;
172 };
173
174 backlight {
175 compatible = "pwm-backlight";
176 pwms = <&pwm 3 5000000 0>;
177 brightness-levels = <0 4 8 16 32 64 128 255>;
178 default-brightness-level = <6>;
179
180 };
181
182 onewire {
183 compatible = "w1-gpio";
184 pinctrl-names = "default";
185 pinctrl-0 = <&w1_gpio_pins>;
186 status = "okay";
187 gpios = <&gpio1 21 0>;
188 };
189};
190
191&i2c1 {
192 pinctrl-names = "default";
193 pinctrl-0 = <&i2c1_pins_a>;
194 status = "okay";
195};
196
197&lcdif {
198 pinctrl-names = "default";
199 pinctrl-0 = <&lcdif_18bit_pins_cfa10049
200 &lcdif_pins_cfa10049
201 &lcdif_pins_cfa10049_pullup>;
202 display = <&display0>;
203 status = "okay";
204
205 display0: display0 {
206 bits-per-pixel = <32>;
207 bus-width = <18>;
208
209 display-timings {
210 native-mode = <&timing0>;
211 timing0: timing0 {
212 clock-frequency = <9216000>;
213 hactive = <320>;
214 vactive = <480>;
215 hback-porch = <2>;
216 hfront-porch = <2>;
217 vback-porch = <2>;
218 vfront-porch = <2>;
219 hsync-len = <15>;
220 vsync-len = <15>;
221 hsync-active = <0>;
222 vsync-active = <0>;
223 de-active = <1>;
224 pixelclk-active = <1>;
225 };
226 };
227 };
228};
229
230&lradc {
231 fsl,lradc-touchscreen-wires = <4>;
232 status = "okay";
233};
234
235&mac0 {
236 phy-mode = "rmii";
237 pinctrl-names = "default";
238 pinctrl-0 = <&mac0_pins_a
239 &mac0_pins_cfa10049>;
240 phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
241 phy-reset-duration = <100>;
242 status = "okay";
243};
244
245&pinctrl {
246 usb_pins_cfa10049: usb-10049@0 {
247 reg = <0>;
248 fsl,pinmux-ids = <
249 MX28_PAD_GPMI_D07__GPIO_0_7
250 >;
251 fsl,drive-strength = <MXS_DRIVE_4mA>;
252 fsl,voltage = <MXS_VOLTAGE_HIGH>;
253 fsl,pull-up = <MXS_PULL_DISABLE>;
254 };
255
256 i2cmux_pins_cfa10049: i2cmux-10049@0 {
257 reg = <0>;
258 fsl,pinmux-ids = <
259 MX28_PAD_LCD_D22__GPIO_1_22
260 MX28_PAD_LCD_D23__GPIO_1_23
261 >;
262 fsl,drive-strength = <MXS_DRIVE_4mA>;
263 fsl,voltage = <MXS_VOLTAGE_HIGH>;
264 fsl,pull-up = <MXS_PULL_DISABLE>;
265 };
266
267 mac0_pins_cfa10049: mac0-10049@0 {
268 reg = <0>;
269 fsl,pinmux-ids = <
270 MX28_PAD_SSP2_SS2__GPIO_2_21
271 >;
272 fsl,drive-strength = <MXS_DRIVE_4mA>;
273 fsl,voltage = <MXS_VOLTAGE_HIGH>;
274 fsl,pull-up = <MXS_PULL_DISABLE>;
275 };
276
277 pca_pins_cfa10049: pca-10049@0 {
278 reg = <0>;
279 fsl,pinmux-ids = <
280 MX28_PAD_SSP2_SS0__GPIO_2_19
281 >;
282 fsl,drive-strength = <MXS_DRIVE_4mA>;
283 fsl,voltage = <MXS_VOLTAGE_HIGH>;
284 fsl,pull-up = <MXS_PULL_ENABLE>;
285 };
286
287 rotary_pins_cfa10049: rotary-10049@0 {
288 reg = <0>;
289 fsl,pinmux-ids = <
290 MX28_PAD_I2C0_SCL__GPIO_3_24
291 MX28_PAD_I2C0_SDA__GPIO_3_25
292 >;
293 fsl,drive-strength = <MXS_DRIVE_4mA>;
294 fsl,voltage = <MXS_VOLTAGE_HIGH>;
295 fsl,pull-up = <MXS_PULL_ENABLE>;
296 };
297
298 rotary_btn_pins_cfa10049: rotary-btn-10049@0 {
299 reg = <0>;
300 fsl,pinmux-ids = <
301 MX28_PAD_SAIF1_SDATA0__GPIO_3_26
302 >;
303 fsl,drive-strength = <MXS_DRIVE_4mA>;
304 fsl,voltage = <MXS_VOLTAGE_HIGH>;
305 fsl,pull-up = <MXS_PULL_ENABLE>;
306 };
307
308 spi2_pins_cfa10049: spi2-cfa10049@0 {
309 reg = <0>;
310 fsl,pinmux-ids = <
311 MX28_PAD_SSP2_SCK__GPIO_2_16
312 MX28_PAD_SSP2_MOSI__GPIO_2_17
313 MX28_PAD_SSP2_MISO__GPIO_2_18
314 MX28_PAD_AUART1_TX__GPIO_3_5
315 >;
316 fsl,drive-strength = <MXS_DRIVE_8mA>;
317 fsl,voltage = <MXS_VOLTAGE_HIGH>;
318 fsl,pull-up = <MXS_PULL_ENABLE>;
319 };
320
321 spi3_pins_cfa10049: spi3-cfa10049@0 {
322 reg = <0>;
323 fsl,pinmux-ids = <
324 MX28_PAD_GPMI_RDN__GPIO_0_24
325 MX28_PAD_GPMI_RESETN__GPIO_0_28
326 MX28_PAD_GPMI_CE1N__GPIO_0_17
327 MX28_PAD_GPMI_ALE__GPIO_0_26
328 MX28_PAD_GPMI_CLE__GPIO_0_27
329 >;
330 fsl,drive-strength = <MXS_DRIVE_8mA>;
331 fsl,voltage = <MXS_VOLTAGE_HIGH>;
332 fsl,pull-up = <MXS_PULL_ENABLE>;
333 };
334
335 lcdif_18bit_pins_cfa10049: lcdif-18bit@0 {
336 reg = <0>;
337 fsl,pinmux-ids = <
338 MX28_PAD_LCD_D00__LCD_D0
339 MX28_PAD_LCD_D01__LCD_D1
340 MX28_PAD_LCD_D02__LCD_D2
341 MX28_PAD_LCD_D03__LCD_D3
342 MX28_PAD_LCD_D04__LCD_D4
343 MX28_PAD_LCD_D05__LCD_D5
344 MX28_PAD_LCD_D06__LCD_D6
345 MX28_PAD_LCD_D07__LCD_D7
346 MX28_PAD_LCD_D08__LCD_D8
347 MX28_PAD_LCD_D09__LCD_D9
348 MX28_PAD_LCD_D10__LCD_D10
349 MX28_PAD_LCD_D11__LCD_D11
350 MX28_PAD_LCD_D12__LCD_D12
351 MX28_PAD_LCD_D13__LCD_D13
352 MX28_PAD_LCD_D14__LCD_D14
353 MX28_PAD_LCD_D15__LCD_D15
354 MX28_PAD_LCD_D16__LCD_D16
355 MX28_PAD_LCD_D17__LCD_D17
356 >;
357 fsl,drive-strength = <MXS_DRIVE_4mA>;
358 fsl,voltage = <MXS_VOLTAGE_HIGH>;
359 fsl,pull-up = <MXS_PULL_DISABLE>;
360 };
361
362 lcdif_pins_cfa10049: lcdif-evk@0 {
363 reg = <0>;
364 fsl,pinmux-ids = <
365 MX28_PAD_LCD_RD_E__LCD_VSYNC
366 MX28_PAD_LCD_WR_RWN__LCD_HSYNC
367 MX28_PAD_LCD_RS__LCD_DOTCLK
368 MX28_PAD_LCD_CS__LCD_ENABLE
369 >;
370 fsl,drive-strength = <MXS_DRIVE_4mA>;
371 fsl,voltage = <MXS_VOLTAGE_HIGH>;
372 fsl,pull-up = <MXS_PULL_DISABLE>;
373 };
374
375 lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 {
376 reg = <0>;
377 fsl,pinmux-ids = <
378 MX28_PAD_LCD_RESET__GPIO_3_30
379 >;
380 fsl,drive-strength = <MXS_DRIVE_4mA>;
381 fsl,voltage = <MXS_VOLTAGE_HIGH>;
382 fsl,pull-up = <MXS_PULL_ENABLE>;
383 };
384
385 w1_gpio_pins: w1-gpio@0 {
386 reg = <0>;
387 fsl,pinmux-ids = <
388 MX28_PAD_LCD_D21__GPIO_1_21
389 >;
390 fsl,drive-strength = <MXS_DRIVE_8mA>;
391 fsl,voltage = <MXS_VOLTAGE_HIGH>;
392 fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */
393 };
394};
395
396&pwm {
397 pinctrl-names = "default";
398 pinctrl-0 = <&pwm3_pins_b>;
399 status = "okay";
400};
401
402&usb1 {
403 vbus-supply = <&reg_usb1_vbus>;
404 pinctrl-0 = <&usb1_pins_a>;
405 pinctrl-names = "default";
406 status = "okay";
407};
408
409&usbphy1 {
410 status = "okay";
411};