blob: c83f87fa79fd065b15d1e9e982c6d1d99435bd29 [file] [log] [blame]
Mugunthan V Ne8131382016-09-27 13:01:41 +05301/*
Lokesh Vutla7aa1a402016-11-23 13:25:29 +05302 * Copyright (C) 2014-2016 Texas Instruments Incorporated - http://www.ti.com/
Mugunthan V Ne8131382016-09-27 13:01:41 +05303 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/dts-v1/;
9
10#include "dra72x.dtsi"
11#include <dt-bindings/gpio/gpio.h>
Lokesh Vutla7aa1a402016-11-23 13:25:29 +053012#include <dt-bindings/clk/ti-dra7-atl.h>
Mugunthan V Ne8131382016-09-27 13:01:41 +053013
14/ {
15 compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
16
Lokesh Vutla7aa1a402016-11-23 13:25:29 +053017 aliases {
18 display0 = &hdmi0;
19 };
20
Mugunthan V Ne8131382016-09-27 13:01:41 +053021 chosen {
22 stdout-path = &uart1;
23 tick-timer = &timer2;
24 };
25
Lokesh Vutla7aa1a402016-11-23 13:25:29 +053026 evm_12v0: fixedregulator-evm12v0 {
27 /* main supply */
28 compatible = "regulator-fixed";
29 regulator-name = "evm_12v0";
30 regulator-min-microvolt = <12000000>;
31 regulator-max-microvolt = <12000000>;
32 regulator-always-on;
33 regulator-boot-on;
Mugunthan V Ne8131382016-09-27 13:01:41 +053034 };
35
Lokesh Vutla7aa1a402016-11-23 13:25:29 +053036 evm_5v0: fixedregulator-evm5v0 {
37 /* Output 1 of TPS43351QDAPRQ1 on dra72-evm */
38 /* Output 1 of LM5140QRWGTQ1 on dra71-evm */
39 compatible = "regulator-fixed";
40 regulator-name = "evm_5v0";
41 regulator-min-microvolt = <5000000>;
42 regulator-max-microvolt = <5000000>;
43 vin-supply = <&evm_12v0>;
44 regulator-always-on;
45 regulator-boot-on;
46 };
47
48 vsys_3v3: fixedregulator-vsys3v3 {
49 /* Output 2 of TPS43351QDAPRQ1 on dra72-evm */
50 /* Output 2 of LM5140QRWGTQ1 on dra71-evm */
51 compatible = "regulator-fixed";
52 regulator-name = "vsys_3v3";
53 regulator-min-microvolt = <3300000>;
54 regulator-max-microvolt = <3300000>;
55 vin-supply = <&evm_12v0>;
56 regulator-always-on;
57 regulator-boot-on;
58 };
59
60 evm_3v3_sw: fixedregulator-evm_3v3 {
61 /* TPS22965DSG */
Mugunthan V Ne8131382016-09-27 13:01:41 +053062 compatible = "regulator-fixed";
63 regulator-name = "evm_3v3";
64 regulator-min-microvolt = <3300000>;
65 regulator-max-microvolt = <3300000>;
Lokesh Vutla7aa1a402016-11-23 13:25:29 +053066 vin-supply = <&vsys_3v3>;
67 regulator-always-on;
68 regulator-boot-on;
69 };
70
71 aic_dvdd: fixedregulator-aic_dvdd {
72 /* TPS77018DBVT */
73 compatible = "regulator-fixed";
74 regulator-name = "aic_dvdd";
75 vin-supply = <&evm_3v3_sw>;
76 regulator-min-microvolt = <1800000>;
77 regulator-max-microvolt = <1800000>;
78 };
79
80 evm_3v3_sd: fixedregulator-sd {
81 compatible = "regulator-fixed";
82 regulator-name = "evm_3v3_sd";
83 regulator-min-microvolt = <3300000>;
84 regulator-max-microvolt = <3300000>;
85 vin-supply = <&evm_3v3_sw>;
86 enable-active-high;
87 gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
Mugunthan V Ne8131382016-09-27 13:01:41 +053088 };
89
90 extcon_usb1: extcon_usb1 {
91 compatible = "linux,extcon-usb-gpio";
92 id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
93 };
94
95 extcon_usb2: extcon_usb2 {
96 compatible = "linux,extcon-usb-gpio";
97 id-gpio = <&pcf_gpio_21 2 GPIO_ACTIVE_HIGH>;
98 };
99
100 hdmi0: connector {
101 compatible = "hdmi-connector";
102 label = "hdmi";
103
104 type = "a";
105
106 port {
107 hdmi_connector_in: endpoint {
108 remote-endpoint = <&tpd12s015_out>;
109 };
110 };
111 };
112
113 tpd12s015: encoder {
114 compatible = "ti,tpd12s015";
115
116 gpios = <&pcf_hdmi 4 GPIO_ACTIVE_HIGH>, /* P4, CT CP HPD */
117 <&pcf_hdmi 5 GPIO_ACTIVE_HIGH>, /* P5, LS OE */
118 <&gpio7 12 GPIO_ACTIVE_HIGH>; /* gpio7_12/sp1_cs2, HPD */
119
120 ports {
121 #address-cells = <1>;
122 #size-cells = <0>;
123
124 port@0 {
125 reg = <0>;
126
127 tpd12s015_in: endpoint {
128 remote-endpoint = <&hdmi_out>;
129 };
130 };
131
132 port@1 {
133 reg = <1>;
134
135 tpd12s015_out: endpoint {
136 remote-endpoint = <&hdmi_connector_in>;
137 };
138 };
139 };
140 };
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530141
142 sound0: sound0 {
143 compatible = "simple-audio-card";
144 simple-audio-card,name = "DRA7xx-EVM";
145 simple-audio-card,widgets =
146 "Headphone", "Headphone Jack",
147 "Line", "Line Out",
148 "Microphone", "Mic Jack",
149 "Line", "Line In";
150 simple-audio-card,routing =
151 "Headphone Jack", "HPLOUT",
152 "Headphone Jack", "HPROUT",
153 "Line Out", "LLOUT",
154 "Line Out", "RLOUT",
155 "MIC3L", "Mic Jack",
156 "MIC3R", "Mic Jack",
157 "Mic Jack", "Mic Bias",
158 "LINE1L", "Line In",
159 "LINE1R", "Line In";
160 simple-audio-card,format = "dsp_b";
161 simple-audio-card,bitclock-master = <&sound0_master>;
162 simple-audio-card,frame-master = <&sound0_master>;
163 simple-audio-card,bitclock-inversion;
164
165 sound0_master: simple-audio-card,cpu {
166 sound-dai = <&mcasp3>;
167 system-clock-frequency = <5644800>;
168 };
169
170 simple-audio-card,codec {
171 sound-dai = <&tlv320aic3106>;
172 clocks = <&atl_clkin2_ck>;
173 };
174 };
Mugunthan V Ne8131382016-09-27 13:01:41 +0530175};
176
177&dra7_pmx_core {
178 mmc1_pins_default: mmc1_pins_default {
179 pinctrl-single,pins = <
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530180 DRA7XX_CORE_IOPAD(0x376c, PIN_INPUT | MUX_MODE14) /* mmc1sdcd.gpio219 */
181 DRA7XX_CORE_IOPAD(0x3754, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_clk.clk */
182 DRA7XX_CORE_IOPAD(0x3758, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_cmd.cmd */
183 DRA7XX_CORE_IOPAD(0x375c, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat0.dat0 */
184 DRA7XX_CORE_IOPAD(0x3760, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat1.dat1 */
185 DRA7XX_CORE_IOPAD(0x3764, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat2.dat2 */
186 DRA7XX_CORE_IOPAD(0x3768, PIN_INPUT_PULLUP | MUX_MODE0) /* mmc1_dat3.dat3 */
Mugunthan V Ne8131382016-09-27 13:01:41 +0530187 >;
188 };
189
190 mmc2_pins_default: mmc2_pins_default {
191 pinctrl-single,pins = <
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530192 DRA7XX_CORE_IOPAD(0x349c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a23.mmc2_clk */
193 DRA7XX_CORE_IOPAD(0x34b0, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs1.mmc2_cmd */
194 DRA7XX_CORE_IOPAD(0x34a0, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a24.mmc2_dat0 */
195 DRA7XX_CORE_IOPAD(0x34a4, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a25.mmc2_dat1 */
196 DRA7XX_CORE_IOPAD(0x34a8, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a26.mmc2_dat2 */
197 DRA7XX_CORE_IOPAD(0x34ac, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a27.mmc2_dat3 */
198 DRA7XX_CORE_IOPAD(0x348c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a19.mmc2_dat4 */
199 DRA7XX_CORE_IOPAD(0x3490, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a20.mmc2_dat5 */
200 DRA7XX_CORE_IOPAD(0x3494, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a21.mmc2_dat6 */
201 DRA7XX_CORE_IOPAD(0x3498, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_a22.mmc2_dat7 */
Mugunthan V Ne8131382016-09-27 13:01:41 +0530202 >;
203 };
204
205 dcan1_pins_default: dcan1_pins_default {
206 pinctrl-single,pins = <
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530207 DRA7XX_CORE_IOPAD(0x37d0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* dcan1_tx */
208 DRA7XX_CORE_IOPAD(0x3818, PULL_UP | MUX_MODE1) /* wakeup0.dcan1_rx */
Mugunthan V Ne8131382016-09-27 13:01:41 +0530209 >;
210 };
211
212 dcan1_pins_sleep: dcan1_pins_sleep {
213 pinctrl-single,pins = <
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530214 DRA7XX_CORE_IOPAD(0x37d0, MUX_MODE15 | PULL_UP) /* dcan1_tx.off */
215 DRA7XX_CORE_IOPAD(0x3818, MUX_MODE15 | PULL_UP) /* wakeup0.off */
Mugunthan V Ne8131382016-09-27 13:01:41 +0530216 >;
217 };
218};
219
220&i2c1 {
221 status = "okay";
222 clock-frequency = <400000>;
223
Mugunthan V Ne8131382016-09-27 13:01:41 +0530224 pcf_gpio_21: gpio@21 {
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530225 compatible = "ti,pcf8575", "nxp,pcf8575";
Mugunthan V Ne8131382016-09-27 13:01:41 +0530226 u-boot,i2c-offset-len = <0>;
227 reg = <0x21>;
228 lines-initial-states = <0x1408>;
229 gpio-controller;
230 #gpio-cells = <2>;
Mugunthan V Ne8131382016-09-27 13:01:41 +0530231 interrupt-controller;
232 #interrupt-cells = <2>;
233 };
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530234
235 tlv320aic3106: tlv320aic3106@19 {
236 #sound-dai-cells = <0>;
237 compatible = "ti,tlv320aic3106";
238 reg = <0x19>;
239 adc-settle-ms = <40>;
240 ai3x-micbias-vg = <1>; /* 2.0V */
241 status = "okay";
242
243 /* Regulators */
244 AVDD-supply = <&evm_3v3_sw>;
245 IOVDD-supply = <&evm_3v3_sw>;
246 DRVDD-supply = <&evm_3v3_sw>;
247 DVDD-supply = <&aic_dvdd>;
248 };
Mugunthan V Ne8131382016-09-27 13:01:41 +0530249};
250
251&i2c5 {
252 status = "okay";
253 clock-frequency = <400000>;
254
255 pcf_hdmi: pcf8575@26 {
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530256 compatible = "ti,pcf8575", "nxp,pcf8575";
Mugunthan V Ne8131382016-09-27 13:01:41 +0530257 u-boot,i2c-offset-len = <0>;
258 reg = <0x26>;
259 gpio-controller;
260 #gpio-cells = <2>;
261 /*
262 * initial state is used here to keep the mdio interface
263 * selected on RU89 through SEL_VIN4_MUX_S0, VIN2_S1 and
264 * VIN2_S0 driven high otherwise Ethernet stops working
265 * VIN6_SEL_S0 is low, thus selecting McASP3 over VIN6
266 */
267 lines-initial-states = <0x0f2b>;
268
269 p1 {
270 /* vin6_sel_s0: high: VIN6, low: audio */
271 gpio-hog;
272 gpios = <1 GPIO_ACTIVE_HIGH>;
273 output-low;
274 line-name = "vin6_sel_s0";
275 };
276 };
277};
278
279&uart1 {
280 status = "okay";
281 interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
282 <&dra7_pmx_core 0x3e0>;
283};
284
285&elm {
286 status = "okay";
287};
288
289&gpmc {
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530290 status = "okay";
Mugunthan V Ne8131382016-09-27 13:01:41 +0530291 ranges = <0 0 0x08000000 0x01000000>; /* minimum GPMC partition = 16MB */
292 nand@0,0 {
293 /* To use NAND, DIP switch SW5 must be set like so:
294 * SW5.1 (NAND_SELn) = ON (LOW)
295 * SW5.9 (GPMC_WPN) = OFF (HIGH)
296 */
297 compatible = "ti,omap2-nand";
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530298 reg = <0 0 4>; /* device IO registers */
Mugunthan V Ne8131382016-09-27 13:01:41 +0530299 interrupt-parent = <&gpmc>;
300 interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530301 <1 IRQ_TYPE_NONE>; /* termcount */
302 rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 pin */
Mugunthan V Ne8131382016-09-27 13:01:41 +0530303 ti,nand-ecc-opt = "bch8";
304 ti,elm-id = <&elm>;
305 nand-bus-width = <16>;
306 gpmc,device-width = <2>;
307 gpmc,sync-clk-ps = <0>;
308 gpmc,cs-on-ns = <0>;
309 gpmc,cs-rd-off-ns = <80>;
310 gpmc,cs-wr-off-ns = <80>;
311 gpmc,adv-on-ns = <0>;
312 gpmc,adv-rd-off-ns = <60>;
313 gpmc,adv-wr-off-ns = <60>;
314 gpmc,we-on-ns = <10>;
315 gpmc,we-off-ns = <50>;
316 gpmc,oe-on-ns = <4>;
317 gpmc,oe-off-ns = <40>;
318 gpmc,access-ns = <40>;
319 gpmc,wr-access-ns = <80>;
320 gpmc,rd-cycle-ns = <80>;
321 gpmc,wr-cycle-ns = <80>;
322 gpmc,bus-turnaround-ns = <0>;
323 gpmc,cycle2cycle-delay-ns = <0>;
324 gpmc,clk-activation-ns = <0>;
Mugunthan V Ne8131382016-09-27 13:01:41 +0530325 gpmc,wr-data-mux-bus-ns = <0>;
326 /* MTD partition table */
327 /* All SPL-* partitions are sized to minimal length
328 * which can be independently programmable. For
329 * NAND flash this is equal to size of erase-block */
330 #address-cells = <1>;
331 #size-cells = <1>;
332 partition@0 {
333 label = "NAND.SPL";
334 reg = <0x00000000 0x000020000>;
335 };
336 partition@1 {
337 label = "NAND.SPL.backup1";
338 reg = <0x00020000 0x00020000>;
339 };
340 partition@2 {
341 label = "NAND.SPL.backup2";
342 reg = <0x00040000 0x00020000>;
343 };
344 partition@3 {
345 label = "NAND.SPL.backup3";
346 reg = <0x00060000 0x00020000>;
347 };
348 partition@4 {
349 label = "NAND.u-boot-spl-os";
350 reg = <0x00080000 0x00040000>;
351 };
352 partition@5 {
353 label = "NAND.u-boot";
354 reg = <0x000c0000 0x00100000>;
355 };
356 partition@6 {
357 label = "NAND.u-boot-env";
358 reg = <0x001c0000 0x00020000>;
359 };
360 partition@7 {
361 label = "NAND.u-boot-env.backup1";
362 reg = <0x001e0000 0x00020000>;
363 };
364 partition@8 {
365 label = "NAND.kernel";
366 reg = <0x00200000 0x00800000>;
367 };
368 partition@9 {
369 label = "NAND.file-system";
370 reg = <0x00a00000 0x0f600000>;
371 };
372 };
373};
374
Mugunthan V Ne8131382016-09-27 13:01:41 +0530375&omap_dwc3_1 {
376 extcon = <&extcon_usb1>;
377};
378
379&omap_dwc3_2 {
380 extcon = <&extcon_usb2>;
381};
382
383&usb1 {
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530384 dr_mode = "peripheral";
Mugunthan V Ne8131382016-09-27 13:01:41 +0530385};
386
387&usb2 {
388 dr_mode = "host";
389};
390
391&mmc1 {
392 status = "okay";
393 pinctrl-names = "default";
394 pinctrl-0 = <&mmc1_pins_default>;
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530395 vmmc-supply = <&evm_3v3_sd>;
Mugunthan V Ne8131382016-09-27 13:01:41 +0530396 bus-width = <4>;
397 /*
398 * SDCD signal is not being used here - using the fact that GPIO mode
399 * is a viable alternative
400 */
401 cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>;
402 max-frequency = <192000000>;
403};
404
405&mmc2 {
406 /* SW5-3 in ON position */
407 status = "okay";
408 pinctrl-names = "default";
409 pinctrl-0 = <&mmc2_pins_default>;
410
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530411 vmmc-supply = <&evm_3v3_sw>;
Mugunthan V Ne8131382016-09-27 13:01:41 +0530412 bus-width = <8>;
413 ti,non-removable;
414 max-frequency = <192000000>;
415};
416
417&mac {
418 status = "okay";
419};
420
421&dcan1 {
422 status = "ok";
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530423 pinctrl-names = "default", "sleep", "active";
424 pinctrl-0 = <&dcan1_pins_sleep>;
425 pinctrl-1 = <&dcan1_pins_sleep>;
426 pinctrl-2 = <&dcan1_pins_default>;
Mugunthan V Ne8131382016-09-27 13:01:41 +0530427};
428
429&qspi {
430 status = "okay";
431
432 spi-max-frequency = <76800000>;
433 m25p80@0 {
434 compatible = "s25fl256s1", "spi-flash";
Vignesh R84295f22016-11-05 16:05:15 +0530435 spi-max-frequency = <76800000>;
Mugunthan V Ne8131382016-09-27 13:01:41 +0530436 reg = <0>;
437 spi-tx-bus-width = <1>;
438 spi-rx-bus-width = <4>;
439 #address-cells = <1>;
440 #size-cells = <1>;
441
442 /* MTD partition table.
443 * The ROM checks the first four physical blocks
444 * for a valid file to boot and the flash here is
445 * 64KiB block size.
446 */
447 partition@0 {
448 label = "QSPI.SPL";
449 reg = <0x00000000 0x000010000>;
450 };
451 partition@1 {
452 label = "QSPI.SPL.backup1";
453 reg = <0x00010000 0x00010000>;
454 };
455 partition@2 {
456 label = "QSPI.SPL.backup2";
457 reg = <0x00020000 0x00010000>;
458 };
459 partition@3 {
460 label = "QSPI.SPL.backup3";
461 reg = <0x00030000 0x00010000>;
462 };
463 partition@4 {
464 label = "QSPI.u-boot";
465 reg = <0x00040000 0x00100000>;
466 };
467 partition@5 {
468 label = "QSPI.u-boot-spl-os";
469 reg = <0x00140000 0x00080000>;
470 };
471 partition@6 {
472 label = "QSPI.u-boot-env";
473 reg = <0x001c0000 0x00010000>;
474 };
475 partition@7 {
476 label = "QSPI.u-boot-env.backup1";
477 reg = <0x001d0000 0x0010000>;
478 };
479 partition@8 {
480 label = "QSPI.kernel";
481 reg = <0x001e0000 0x0800000>;
482 };
483 partition@9 {
484 label = "QSPI.file-system";
485 reg = <0x009e0000 0x01620000>;
486 };
487 };
488};
489
490&dss {
491 status = "ok";
Mugunthan V Ne8131382016-09-27 13:01:41 +0530492};
493
494&hdmi {
495 status = "ok";
496
497 port {
498 hdmi_out: endpoint {
499 remote-endpoint = <&tpd12s015_in>;
500 };
501 };
502};
Lokesh Vutla7aa1a402016-11-23 13:25:29 +0530503
504&atl {
505 assigned-clocks = <&abe_dpll_sys_clk_mux>,
506 <&atl_gfclk_mux>,
507 <&dpll_abe_ck>,
508 <&dpll_abe_m2x2_ck>,
509 <&atl_clkin2_ck>;
510 assigned-clock-parents = <&sys_clkin2>, <&dpll_abe_m2_ck>;
511 assigned-clock-rates = <0>, <0>, <180633600>, <361267200>, <5644800>;
512
513 status = "okay";
514
515 atl2 {
516 bws = <DRA7_ATL_WS_MCASP2_FSX>;
517 aws = <DRA7_ATL_WS_MCASP3_FSX>;
518 };
519};
520
521&mcasp3 {
522 #sound-dai-cells = <0>;
523
524 assigned-clocks = <&mcasp3_ahclkx_mux>;
525 assigned-clock-parents = <&atl_clkin2_ck>;
526
527 status = "okay";
528
529 op-mode = <0>; /* MCASP_IIS_MODE */
530 tdm-slots = <2>;
531 /* 4 serializer */
532 serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
533 1 2 0 0
534 >;
535 tx-num-evt = <32>;
536 rx-num-evt = <32>;
537};
538
539&mailbox5 {
540 status = "okay";
541 mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
542 status = "okay";
543 };
544 mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
545 status = "okay";
546 };
547};
548
549&mailbox6 {
550 status = "okay";
551 mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
552 status = "okay";
553 };
554};