1/*
2 * Copyright (C) 2014-2016 Texas Instruments Incorporated - http://www.ti.com/
3 *
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>
12#include <dt-bindings/clk/ti-dra7-atl.h>
13
14/ {
15	compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
16
17	aliases {
18		display0 = &hdmi0;
19	};
20
21	chosen {
22		stdout-path = &uart1;
23	};
24
25	evm_12v0: fixedregulator-evm12v0 {
26		/* main supply */
27		compatible = "regulator-fixed";
28		regulator-name = "evm_12v0";
29		regulator-min-microvolt = <12000000>;
30		regulator-max-microvolt = <12000000>;
31		regulator-always-on;
32		regulator-boot-on;
33	};
34
35	evm_5v0: fixedregulator-evm5v0 {
36		/* Output 1 of TPS43351QDAPRQ1 on dra72-evm */
37		/* Output 1 of LM5140QRWGTQ1 on dra71-evm */
38		compatible = "regulator-fixed";
39		regulator-name = "evm_5v0";
40		regulator-min-microvolt = <5000000>;
41		regulator-max-microvolt = <5000000>;
42		vin-supply = <&evm_12v0>;
43		regulator-always-on;
44		regulator-boot-on;
45	};
46
47	evm_3v6: fixedregulator-evm_3v6 {
48		compatible = "regulator-fixed";
49		regulator-name = "evm_3v6";
50		regulator-min-microvolt = <3600000>;
51		regulator-max-microvolt = <3600000>;
52		vin-supply = <&evm_5v0>;
53		regulator-always-on;
54		regulator-boot-on;
55	};
56
57	vsys_3v3: fixedregulator-vsys3v3 {
58		/* Output 2 of TPS43351QDAPRQ1 on dra72-evm */
59		/* Output 2 of LM5140QRWGTQ1 on dra71-evm */
60		compatible = "regulator-fixed";
61		regulator-name = "vsys_3v3";
62		regulator-min-microvolt = <3300000>;
63		regulator-max-microvolt = <3300000>;
64		vin-supply = <&evm_12v0>;
65		regulator-always-on;
66		regulator-boot-on;
67	};
68
69	evm_3v3_sw: fixedregulator-evm_3v3 {
70		/* TPS22965DSG */
71		compatible = "regulator-fixed";
72		regulator-name = "evm_3v3";
73		regulator-min-microvolt = <3300000>;
74		regulator-max-microvolt = <3300000>;
75		vin-supply = <&vsys_3v3>;
76		regulator-always-on;
77		regulator-boot-on;
78	};
79
80	aic_dvdd: fixedregulator-aic_dvdd {
81		/* TPS77018DBVT */
82		compatible = "regulator-fixed";
83		regulator-name = "aic_dvdd";
84		vin-supply = <&evm_3v3_sw>;
85		regulator-min-microvolt = <1800000>;
86		regulator-max-microvolt = <1800000>;
87	};
88
89	evm_3v3_sd: fixedregulator-sd {
90		compatible = "regulator-fixed";
91		regulator-name = "evm_3v3_sd";
92		regulator-min-microvolt = <3300000>;
93		regulator-max-microvolt = <3300000>;
94		vin-supply = <&evm_3v3_sw>;
95		enable-active-high;
96		gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
97	};
98
99	extcon_usb1: extcon_usb1 {
100		compatible = "linux,extcon-usb-gpio";
101		id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
102	};
103
104	extcon_usb2: extcon_usb2 {
105		compatible = "linux,extcon-usb-gpio";
106		id-gpio = <&pcf_gpio_21 2 GPIO_ACTIVE_HIGH>;
107	};
108
109	hdmi0: connector {
110		compatible = "hdmi-connector";
111		label = "hdmi";
112
113		type = "a";
114
115		port {
116			hdmi_connector_in: endpoint {
117				remote-endpoint = <&tpd12s015_out>;
118			};
119		};
120	};
121
122	tpd12s015: encoder {
123		compatible = "ti,tpd12s015";
124
125		gpios = <&pcf_hdmi 4 GPIO_ACTIVE_HIGH>,	/* P4, CT CP HPD */
126			<&pcf_hdmi 5 GPIO_ACTIVE_HIGH>,	/* P5, LS OE */
127			<&gpio7 12 GPIO_ACTIVE_HIGH>;	/* gpio7_12/sp1_cs2, HPD */
128
129		ports {
130			#address-cells = <1>;
131			#size-cells = <0>;
132
133			port@0 {
134				reg = <0>;
135
136				tpd12s015_in: endpoint {
137					remote-endpoint = <&hdmi_out>;
138				};
139			};
140
141			port@1 {
142				reg = <1>;
143
144				tpd12s015_out: endpoint {
145					remote-endpoint = <&hdmi_connector_in>;
146				};
147			};
148		};
149	};
150
151	sound0: sound0 {
152		compatible = "simple-audio-card";
153		simple-audio-card,name = "DRA7xx-EVM";
154		simple-audio-card,widgets =
155			"Headphone", "Headphone Jack",
156			"Line", "Line Out",
157			"Microphone", "Mic Jack",
158			"Line", "Line In";
159		simple-audio-card,routing =
160			"Headphone Jack",       "HPLOUT",
161			"Headphone Jack",       "HPROUT",
162			"Line Out",		"LLOUT",
163			"Line Out",		"RLOUT",
164			"MIC3L",		"Mic Jack",
165			"MIC3R",		"Mic Jack",
166			"Mic Jack",		"Mic Bias",
167			"LINE1L",               "Line In",
168			"LINE1R",               "Line In";
169		simple-audio-card,format = "dsp_b";
170		simple-audio-card,bitclock-master = <&sound0_master>;
171		simple-audio-card,frame-master = <&sound0_master>;
172		simple-audio-card,bitclock-inversion;
173
174		sound0_master: simple-audio-card,cpu {
175			sound-dai = <&mcasp3>;
176			system-clock-frequency = <5644800>;
177		};
178
179		simple-audio-card,codec {
180			sound-dai = <&tlv320aic3106>;
181			clocks = <&atl_clkin2_ck>;
182		};
183	};
184
185	vmmcwl_fixed: fixedregulator-mmcwl {
186		compatible = "regulator-fixed";
187		regulator-name = "vmmcwl_fixed";
188		regulator-min-microvolt = <1800000>;
189		regulator-max-microvolt = <1800000>;
190		gpio = <&gpio5 8 GPIO_ACTIVE_HIGH>;
191		enable-active-high;
192	};
193};
194
195&dra7_pmx_core {
196	dcan1_pins_default: dcan1_pins_default {
197		pinctrl-single,pins = <
198			DRA7XX_CORE_IOPAD(0x37d0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* dcan1_tx */
199			DRA7XX_CORE_IOPAD(0x3818, PULL_UP | MUX_MODE1)	/* wakeup0.dcan1_rx */
200		>;
201	};
202
203	dcan1_pins_sleep: dcan1_pins_sleep {
204		pinctrl-single,pins = <
205			DRA7XX_CORE_IOPAD(0x37d0, MUX_MODE15 | PULL_UP)	/* dcan1_tx.off */
206			DRA7XX_CORE_IOPAD(0x3818, MUX_MODE15 | PULL_UP)	/* wakeup0.off */
207		>;
208	};
209};
210
211&i2c1 {
212	status = "okay";
213	clock-frequency = <400000>;
214
215	pcf_lcd: gpio@20 {
216		compatible = "nxp,pcf8575";
217		reg = <0x20>;
218		gpio-controller;
219		#gpio-cells = <2>;
220		interrupt-controller;
221		#interrupt-cells = <2>;
222	};
223
224	pcf_gpio_21: gpio@21 {
225		compatible = "ti,pcf8575", "nxp,pcf8575";
226		reg = <0x21>;
227		lines-initial-states = <0x1408>;
228		gpio-controller;
229		#gpio-cells = <2>;
230		interrupt-controller;
231		#interrupt-cells = <2>;
232	};
233
234	tlv320aic3106: tlv320aic3106@19 {
235		#sound-dai-cells = <0>;
236		compatible = "ti,tlv320aic3106";
237		reg = <0x19>;
238		adc-settle-ms = <40>;
239		ai3x-micbias-vg = <1>;		/* 2.0V */
240		status = "okay";
241
242		/* Regulators */
243		AVDD-supply = <&evm_3v3_sw>;
244		IOVDD-supply = <&evm_3v3_sw>;
245		DRVDD-supply = <&evm_3v3_sw>;
246		DVDD-supply = <&aic_dvdd>;
247	};
248};
249
250&i2c5 {
251	status = "okay";
252	clock-frequency = <400000>;
253
254	pcf_hdmi: pcf8575@26 {
255		compatible = "ti,pcf8575", "nxp,pcf8575";
256		reg = <0x26>;
257		gpio-controller;
258		#gpio-cells = <2>;
259		/*
260		 * initial state is used here to keep the mdio interface
261		 * selected on RU89 through SEL_VIN4_MUX_S0, VIN2_S1 and
262		 * VIN2_S0 driven high otherwise Ethernet stops working
263		 * VIN6_SEL_S0 is low, thus selecting McASP3 over VIN6
264		 */
265		lines-initial-states = <0x0f2b>;
266
267		p1 {
268			/* vin6_sel_s0: high: VIN6, low: audio */
269			gpio-hog;
270			gpios = <1 GPIO_ACTIVE_HIGH>;
271			output-low;
272			line-name = "vin6_sel_s0";
273		};
274	};
275};
276
277&uart1 {
278	status = "okay";
279	interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
280			      <&dra7_pmx_core 0x3e0>;
281};
282
283&elm {
284	status = "okay";
285};
286
287&gpmc {
288	/*
289	 * For the existing IOdelay configuration via U-Boot we don't
290	 * support NAND on dra72-evm. Keep it disabled. Enabling it
291	 * requires a different configuration by U-Boot.
292	 */
293	status = "disabled";
294	ranges = <0 0 0x08000000 0x01000000>;	/* minimum GPMC partition = 16MB */
295	nand@0,0 {
296		/* To use NAND, DIP switch SW5 must be set like so:
297		 * SW5.1 (NAND_SELn) = ON (LOW)
298		 * SW5.9 (GPMC_WPN) = OFF (HIGH)
299		 */
300		compatible = "ti,omap2-nand";
301		reg = <0 0 4>;		/* device IO registers */
302		interrupt-parent = <&gpmc>;
303		interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
304			     <1 IRQ_TYPE_NONE>;	/* termcount */
305		rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 pin */
306		ti,nand-xfer-type = "prefetch-dma";
307		ti,nand-ecc-opt = "bch8";
308		ti,elm-id = <&elm>;
309		nand-bus-width = <16>;
310		gpmc,device-width = <2>;
311		gpmc,sync-clk-ps = <0>;
312		gpmc,cs-on-ns = <0>;
313		gpmc,cs-rd-off-ns = <80>;
314		gpmc,cs-wr-off-ns = <80>;
315		gpmc,adv-on-ns = <0>;
316		gpmc,adv-rd-off-ns = <60>;
317		gpmc,adv-wr-off-ns = <60>;
318		gpmc,we-on-ns = <10>;
319		gpmc,we-off-ns = <50>;
320		gpmc,oe-on-ns = <4>;
321		gpmc,oe-off-ns = <40>;
322		gpmc,access-ns = <40>;
323		gpmc,wr-access-ns = <80>;
324		gpmc,rd-cycle-ns = <80>;
325		gpmc,wr-cycle-ns = <80>;
326		gpmc,bus-turnaround-ns = <0>;
327		gpmc,cycle2cycle-delay-ns = <0>;
328		gpmc,clk-activation-ns = <0>;
329		gpmc,wr-data-mux-bus-ns = <0>;
330		/* MTD partition table */
331		/* All SPL-* partitions are sized to minimal length
332		 * which can be independently programmable. For
333		 * NAND flash this is equal to size of erase-block */
334		#address-cells = <1>;
335		#size-cells = <1>;
336		partition@0 {
337			label = "NAND.SPL";
338			reg = <0x00000000 0x000020000>;
339		};
340		partition@1 {
341			label = "NAND.SPL.backup1";
342			reg = <0x00020000 0x00020000>;
343		};
344		partition@2 {
345			label = "NAND.SPL.backup2";
346			reg = <0x00040000 0x00020000>;
347		};
348		partition@3 {
349			label = "NAND.SPL.backup3";
350			reg = <0x00060000 0x00020000>;
351		};
352		partition@4 {
353			label = "NAND.u-boot-spl-os";
354			reg = <0x00080000 0x00040000>;
355		};
356		partition@5 {
357			label = "NAND.u-boot";
358			reg = <0x000c0000 0x00100000>;
359		};
360		partition@6 {
361			label = "NAND.u-boot-env";
362			reg = <0x001c0000 0x00020000>;
363		};
364		partition@7 {
365			label = "NAND.u-boot-env.backup1";
366			reg = <0x001e0000 0x00020000>;
367		};
368		partition@8 {
369			label = "NAND.kernel";
370			reg = <0x00200000 0x00800000>;
371		};
372		partition@9 {
373			label = "NAND.file-system";
374			reg = <0x00a00000 0x0f600000>;
375		};
376	};
377};
378
379&omap_dwc3_1 {
380	extcon = <&extcon_usb1>;
381};
382
383&omap_dwc3_2 {
384	extcon = <&extcon_usb2>;
385};
386
387&usb1 {
388	dr_mode = "otg";
389	extcon = <&extcon_usb1>;
390};
391
392&usb2 {
393	dr_mode = "host";
394	extcon = <&extcon_usb2>;
395};
396
397&mmc1 {
398	status = "okay";
399	pinctrl-names = "default";
400	pinctrl-0 = <&mmc1_pins_default>;
401	vmmc-supply = <&evm_3v3_sd>;
402	bus-width = <4>;
403	/*
404	 * SDCD signal is not being used here - using the fact that GPIO mode
405	 * is a viable alternative
406	 */
407	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>;
408	max-frequency = <192000000>;
409};
410
411&mmc2 {
412	/* SW5-3 in ON position */
413	status = "okay";
414	pinctrl-names = "default";
415	pinctrl-0 = <&mmc2_pins_default>;
416	bus-width = <8>;
417	non-removable;
418	max-frequency = <192000000>;
419};
420
421&mmc4 {
422	status = "okay";
423	vmmc-supply = <&evm_3v6>;
424	vqmmc-supply = <&vmmcwl_fixed>;
425	bus-width = <4>;
426	cap-power-off-card;
427	keep-power-in-suspend;
428	non-removable;
429	pinctrl-names = "default", "hs", "sdr12", "sdr25";
430	pinctrl-0 = <&mmc4_pins_default>;
431	pinctrl-1 = <&mmc4_pins_default>;
432	pinctrl-2 = <&mmc4_pins_default>;
433	pinctrl-3 = <&mmc4_pins_default>;
434	#address-cells = <1>;
435	#size-cells = <0>;
436	wifi@2 {
437		compatible = "ti,wl1835";
438		reg = <2>;
439		interrupt-parent = <&gpio5>;
440		interrupts = <7 IRQ_TYPE_EDGE_RISING>;
441	};
442};
443
444&mac {
445	status = "okay";
446};
447
448&dcan1 {
449	status = "ok";
450	pinctrl-names = "default", "sleep", "active";
451	pinctrl-0 = <&dcan1_pins_sleep>;
452	pinctrl-1 = <&dcan1_pins_sleep>;
453	pinctrl-2 = <&dcan1_pins_default>;
454};
455
456&qspi {
457	status = "okay";
458
459	spi-max-frequency = <76800000>;
460	m25p80@0 {
461		compatible = "s25fl256s1";
462		spi-max-frequency = <76800000>;
463		reg = <0>;
464		spi-tx-bus-width = <1>;
465		spi-rx-bus-width = <4>;
466		#address-cells = <1>;
467		#size-cells = <1>;
468
469		/* MTD partition table.
470		 * The ROM checks the first four physical blocks
471		 * for a valid file to boot and the flash here is
472		 * 64KiB block size.
473		 */
474		partition@0 {
475			label = "QSPI.SPL";
476			reg = <0x00000000 0x000010000>;
477		};
478		partition@1 {
479			label = "QSPI.SPL.backup1";
480			reg = <0x00010000 0x00010000>;
481		};
482		partition@2 {
483			label = "QSPI.SPL.backup2";
484			reg = <0x00020000 0x00010000>;
485		};
486		partition@3 {
487			label = "QSPI.SPL.backup3";
488			reg = <0x00030000 0x00010000>;
489		};
490		partition@4 {
491			label = "QSPI.u-boot";
492			reg = <0x00040000 0x00100000>;
493		};
494		partition@5 {
495			label = "QSPI.u-boot-spl-os";
496			reg = <0x00140000 0x00080000>;
497		};
498		partition@6 {
499			label = "QSPI.u-boot-env";
500			reg = <0x001c0000 0x00010000>;
501		};
502		partition@7 {
503			label = "QSPI.u-boot-env.backup1";
504			reg = <0x001d0000 0x0010000>;
505		};
506		partition@8 {
507			label = "QSPI.kernel";
508			reg = <0x001e0000 0x0800000>;
509		};
510		partition@9 {
511			label = "QSPI.file-system";
512			reg = <0x009e0000 0x01620000>;
513		};
514	};
515};
516
517&dss {
518	status = "ok";
519};
520
521&hdmi {
522	status = "ok";
523
524	port {
525		hdmi_out: endpoint {
526			remote-endpoint = <&tpd12s015_in>;
527		};
528	};
529};
530
531&atl {
532	assigned-clocks = <&abe_dpll_sys_clk_mux>,
533			  <&atl_clkctrl DRA7_ATL_CLKCTRL 26>,
534			  <&dpll_abe_ck>,
535			  <&dpll_abe_m2x2_ck>,
536			  <&atl_clkin2_ck>;
537	assigned-clock-parents = <&sys_clkin2>, <&dpll_abe_m2_ck>;
538	assigned-clock-rates = <0>, <0>, <180633600>, <361267200>, <5644800>;
539
540	status = "okay";
541
542	atl2 {
543		bws = <DRA7_ATL_WS_MCASP2_FSX>;
544		aws = <DRA7_ATL_WS_MCASP3_FSX>;
545	};
546};
547
548&mcasp3 {
549	#sound-dai-cells = <0>;
550
551	assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
552	assigned-clock-parents = <&atl_clkin2_ck>;
553
554	status = "okay";
555
556	op-mode = <0>;          /* MCASP_IIS_MODE */
557	tdm-slots = <2>;
558	/* 4 serializer */
559	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
560		1 2 0 0
561	>;
562	tx-num-evt = <32>;
563	rx-num-evt = <32>;
564};
565
566&mailbox5 {
567	status = "okay";
568	mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
569		status = "okay";
570	};
571	mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
572		status = "okay";
573	};
574};
575
576&mailbox6 {
577	status = "okay";
578	mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
579		status = "okay";
580	};
581};
582
583&pcie1_rc {
584	status = "okay";
585};
586