1 /*
2  * Embedded Artist LPC4357 Developer's Kit
3  *
4  * Copyright 2015 Joachim Eastwood <manabian@gmail.com>
5  *
6  * This code is released using a dual license strategy: BSD/GPL
7  * You can choose the licence that better fits your requirements.
8  *
9  * Released under the terms of 3-clause BSD License
10  * Released under the terms of GNU General Public License Version 2.0
11  *
12  */
13 /dts-v1/;
14 
15 #include "lpc18xx.dtsi"
16 #include "lpc4357.dtsi"
17 
18 #include "dt-bindings/input/input.h"
19 #include "dt-bindings/gpio/gpio.h"
20 
21 / {
22 	model = "Embedded Artists' LPC4357 Developer's Kit";
23 	compatible = "ea,lpc4357-developers-kit", "nxp,lpc4357", "nxp,lpc4350";
24 
25 	aliases {
26 		serial0 = &uart0;
27 		serial1 = &uart1;
28 		serial2 = &uart2;
29 		serial3 = &uart3;
30 	};
31 
32 	chosen {
33 		stdout-path = &uart0;
34 	};
35 
36 	memory@28000000 {
37 		device_type = "memory";
38 		reg = <0x28000000 0x2000000>; /* 32 MB */
39 	};
40 
41 	vcc: vcc_fixed {
42 		compatible = "regulator-fixed";
43 		regulator-name = "3v3-supply";
44 		regulator-min-microvolt = <3300000>;
45 		regulator-max-microvolt = <3300000>;
46 	};
47 
48 	/* vmmc is controlled by sdmmc host internally */
49 	vmmc: vmmc_fixed {
50 		compatible = "regulator-fixed";
51 		regulator-name = "vmmc-supply";
52 		regulator-min-microvolt = <3300000>;
53 		regulator-max-microvolt = <3300000>;
54 	};
55 
56 	gpio_joystick {
57 		compatible = "gpio-keys-polled";
58 		pinctrl-names = "default";
59 		pinctrl-0 = <&gpio_joystick_pins>;
60 		poll-interval = <100>;
61 		autorepeat;
62 
63 		button0 {
64 			label = "joy_enter";
65 			linux,code = <KEY_ENTER>;
66 			gpios = <&gpio LPC_GPIO(4,8) GPIO_ACTIVE_LOW>;
67 		};
68 
69 		button1 {
70 			label = "joy_left";
71 			linux,code = <KEY_LEFT>;
72 			gpios = <&gpio LPC_GPIO(4,9) GPIO_ACTIVE_LOW>;
73 		};
74 
75 		button2 {
76 			label = "joy_up";
77 			linux,code = <KEY_UP>;
78 			gpios = <&gpio LPC_GPIO(4,10) GPIO_ACTIVE_LOW>;
79 		};
80 
81 		button3 {
82 			label = "joy_right";
83 			linux,code = <KEY_RIGHT>;
84 			gpios = <&gpio LPC_GPIO(4,12) GPIO_ACTIVE_LOW>;
85 		};
86 
87 		button4 {
88 			label = "joy_down";
89 			linux,code = <KEY_DOWN>;
90 			gpios = <&gpio LPC_GPIO(4,13) GPIO_ACTIVE_LOW>;
91 		};
92 	};
93 
94 	leds_mmio {
95 		compatible = "gpio-leds";
96 
97 		led1 {
98 			gpios = <&mmio_leds 15 GPIO_ACTIVE_HIGH>;
99 			linux,default-trigger = "heartbeat";
100 		};
101 
102 		led2 {
103 			gpios = <&mmio_leds 14 GPIO_ACTIVE_HIGH>;
104 		};
105 
106 		led3 {
107 			gpios = <&mmio_leds 13 GPIO_ACTIVE_HIGH>;
108 		};
109 
110 		led4 {
111 			gpios = <&mmio_leds 12 GPIO_ACTIVE_HIGH>;
112 		};
113 
114 		led5 {
115 			gpios = <&mmio_leds 11 GPIO_ACTIVE_HIGH>;
116 		};
117 
118 		led6 {
119 			gpios = <&mmio_leds 10 GPIO_ACTIVE_HIGH>;
120 		};
121 
122 		led7 {
123 			gpios = <&mmio_leds 9 GPIO_ACTIVE_HIGH>;
124 		};
125 
126 		led8 {
127 			gpios = <&mmio_leds 8 GPIO_ACTIVE_HIGH>;
128 		};
129 
130 		led9 {
131 			gpios = <&mmio_leds 7 GPIO_ACTIVE_HIGH>;
132 		};
133 
134 		led10 {
135 			gpios = <&mmio_leds 6 GPIO_ACTIVE_HIGH>;
136 		};
137 
138 		led11 {
139 			gpios = <&mmio_leds 5 GPIO_ACTIVE_HIGH>;
140 		};
141 
142 		led12 {
143 			gpios = <&mmio_leds 4 GPIO_ACTIVE_HIGH>;
144 		};
145 
146 		led13 {
147 			gpios = <&mmio_leds 3 GPIO_ACTIVE_HIGH>;
148 		};
149 
150 		led14 {
151 			gpios = <&mmio_leds 2 GPIO_ACTIVE_HIGH>;
152 		};
153 
154 		led15 {
155 			gpios = <&mmio_leds 1 GPIO_ACTIVE_HIGH>;
156 		};
157 
158 		led16 {
159 			gpios = <&mmio_leds 0 GPIO_ACTIVE_HIGH>;
160 		};
161 	};
162 };
163 
164 &pinctrl {
165 	emc_pins: emc-pins {
166 		emc_addr0_23_cfg {
167 			pins =	"p2_9",  "p2_10", "p2_11", "p2_12",
168 				"p2_13", "p1_0",  "p1_1",  "p1_2",
169 				"p2_8",  "p2_7",  "p2_6",  "p2_2",
170 				"p2_1",  "p2_0",  "p6_8",  "p6_7",
171 				"pd_16", "pd_15", "pe_0",  "pe_1",
172 				"pe_2",  "pe_3",  "pe_4",  "pa_4";
173 			function = "emc";
174 			slew-rate = <1>;
175 			bias-disable;
176 			input-enable;
177 			input-schmitt-disable;
178 		};
179 
180 		emc_data0_31_cfg {
181 			pins =	"p1_7",  "p1_8",  "p1_9",  "p1_10",
182 				"p1_11", "p1_12", "p1_13", "p1_14",
183 				"p5_4",  "p5_5",  "p5_6",  "p5_7",
184 				"p5_0",  "p5_1",  "p5_2",  "p5_3",
185 				"pd_2",  "pd_3",  "pd_4",  "pd_5",
186 				"pd_6",  "pd_7",  "pd_8",  "pd_9",
187 				"pe_5",  "pe_6",  "pe_7",  "pe_8",
188 				"pe_9",  "pe_10", "pe_11", "pe_12";
189 			function = "emc";
190 			slew-rate = <1>;
191 			bias-disable;
192 			input-enable;
193 			input-schmitt-disable;
194 		};
195 
196 		emc_we_oe_cfg {
197 			pins = "p1_6", "p1_3";
198 			function = "emc";
199 			slew-rate = <1>;
200 			bias-disable;
201 			input-enable;
202 			input-schmitt-disable;
203 		};
204 
205 		emc_bls0_3_cfg {
206 			pins = "p1_4", "p6_6", "pd_13", "pd_10";
207 			function = "emc";
208 			slew-rate = <1>;
209 			bias-disable;
210 			input-enable;
211 			input-schmitt-disable;
212 		};
213 
214 		emc_cs0_3_cfg {
215 			pins = "p1_5", "p6_3", "pd_12", "pd_11";
216 			function = "emc";
217 			slew-rate = <1>;
218 			bias-disable;
219 			input-enable;
220 			input-schmitt-disable;
221 		};
222 
223 		emc_sdram_dqm0_3_cfg {
224 			pins = "p6_12", "p6_10", "pd_0", "pe_13";
225 			function = "emc";
226 			slew-rate = <1>;
227 			bias-disable;
228 			input-enable;
229 			input-schmitt-disable;
230 		};
231 
232 		emc_sdram_ras_cas_cfg {
233 			pins = "p6_5", "p6_4";
234 			function = "emc";
235 			slew-rate = <1>;
236 			bias-disable;
237 			input-enable;
238 			input-schmitt-disable;
239 		};
240 
241 		emc_sdram_dycs0_cfg {
242 			pins = "p6_9";
243 			function = "emc";
244 			slew-rate = <1>;
245 			bias-disable;
246 			input-enable;
247 			input-schmitt-disable;
248 		};
249 
250 		emc_sdram_cke_cfg {
251 			pins = "p6_11";
252 			function = "emc";
253 			slew-rate = <1>;
254 			bias-disable;
255 			input-enable;
256 			input-schmitt-disable;
257 		};
258 
259 		emc_sdram_clock_cfg {
260 			pins = "clk0", "clk1", "clk2", "clk3";
261 			function = "emc";
262 			slew-rate = <1>;
263 			bias-disable;
264 			input-enable;
265 			input-schmitt-disable;
266 		};
267 	};
268 
269 	enet_rmii_pins: enet-rmii-pins {
270 		enet_rmii_rxd_cfg {
271 			pins = "p1_15", "p0_0";
272 			function = "enet";
273 			slew-rate = <1>;
274 			bias-disable;
275 			input-enable;
276 			input-schmitt-disable;
277 		};
278 
279 		enet_rmii_txd_cfg {
280 			pins = "p1_18", "p1_20";
281 			function = "enet";
282 			slew-rate = <1>;
283 			bias-disable;
284 			input-enable;
285 			input-schmitt-disable;
286 		};
287 
288 		enet_rmii_rx_dv_cfg {
289 			pins = "p1_16";
290 			function = "enet";
291 			bias-disable;
292 			input-enable;
293 			input-schmitt-disable;
294 		};
295 
296 		enet_rmii_tx_en_cfg {
297 			pins = "p0_1";
298 			function = "enet";
299 			bias-disable;
300 			input-enable;
301 			input-schmitt-disable;
302 		};
303 
304 		enet_ref_clk_cfg {
305 			pins = "p1_19";
306 			function = "enet";
307 			slew-rate = <1>;
308 			bias-disable;
309 			input-enable;
310 			input-schmitt-disable;
311 		};
312 
313 		enet_mdio_cfg {
314 			pins = "p1_17";
315 			function = "enet";
316 			bias-disable;
317 			input-enable;
318 			input-schmitt-disable;
319 		};
320 
321 		enet_mdc_cfg {
322 			pins = "pc_1";
323 			function = "enet";
324 			slew-rate = <1>;
325 			bias-disable;
326 			input-enable;
327 			input-schmitt-disable;
328 		};
329 	};
330 
331 	gpio_joystick_pins: gpio-joystick-pins {
332 		gpio_joystick_cfg {
333 			pins =	"p9_0", "p9_1", "pa_1", "pa_2", "pa_3";
334 			function = "gpio";
335 			input-enable;
336 			bias-disable;
337 		};
338 	};
339 
340 	i2c0_pins: i2c0-pins {
341 		i2c0_pins_cfg {
342 			pins = "i2c0_scl", "i2c0_sda";
343 			function = "i2c0";
344 			input-enable;
345 		};
346 	};
347 
348 	sdmmc_pins: sdmmc-pins {
349 		sdmmc_clk_cfg {
350 			pins = "pc_0";
351 			function = "sdmmc";
352 			slew-rate = <1>;
353 			bias-pull-down;
354 		};
355 
356 		sdmmc_cmd_dat0_3_cfg {
357 			pins = "pc_4", "pc_5", "pc_6", "pc_7", "pc_10";
358 			function = "sdmmc";
359 			slew-rate = <1>;
360 			bias-disable;
361 			input-enable;
362 			input-schmitt-disable;
363 		};
364 
365 		sdmmc_cd_cfg {
366 			pins = "pc_8";
367 			function = "sdmmc";
368 			bias-pull-down;
369 			input-enable;
370 		};
371 
372 		sdmmc_pow_cfg {
373 			pins = "pc_9";
374 			function = "sdmmc";
375 			bias-pull-down;
376 		};
377 	};
378 
379 	spifi_pins: spifi-pins {
380 		spifi_clk_cfg {
381 			pins = "p3_3";
382 			function = "spifi";
383 			slew-rate = <1>;
384 			bias-disable;
385 			input-enable;
386 			input-schmitt-disable;
387 		};
388 
389 		spifi_mosi_miso_sio2_3_cfg {
390 			pins = "p3_7", "p3_6", "p3_5", "p3_4";
391 			function = "spifi";
392 			slew-rate = <0>;
393 			bias-disable;
394 			input-enable;
395 			input-schmitt-disable;
396 		};
397 
398 		spifi_cs_cfg {
399 			pins = "p3_8";
400 			function = "spifi";
401 			bias-disable;
402 		};
403 	};
404 
405 	ssp0_pins: ssp0-pins {
406 		ssp0_sck_miso_mosi {
407 			pins = "pf_0", "pf_2", "pf_3";
408 			function = "ssp0";
409 			slew-rate = <1>;
410 			bias-pull-down;
411 			input-enable;
412 			input-schmitt-disable;
413 		};
414 
415 		ssp0_ssel {
416 			pins = "pf_1";
417 			function = "ssp0";
418 			bias-pull-up;
419 		};
420 	};
421 
422 	uart0_pins: uart0-pins {
423 		uart0_rx_cfg {
424 			pins = "pf_11";
425 			function = "uart0";
426 			input-schmitt-disable;
427 			bias-disable;
428 			input-enable;
429 		};
430 
431 		uart0_tx_cfg {
432 			pins = "pf_10";
433 			function = "uart0";
434 			bias-pull-down;
435 		};
436 	};
437 
438 	uart3_pins: uart3-pins {
439 		uart3_rx_cfg {
440 			pins = "p2_4";
441 			function = "uart3";
442 			input-schmitt-disable;
443 			bias-disable;
444 			input-enable;
445 		};
446 
447 		uart3_tx_cfg {
448 			pins = "p9_3";
449 			function = "uart3";
450 			bias-pull-down;
451 		};
452 	};
453 
454 	usb0_pins: usb0-pins {
455 		usb0_pwr_enable {
456 			pins = "p2_3";
457 			function = "usb0";
458 		};
459 
460 		usb0_pwr_fault {
461 			pins = "p8_0";
462 			function = "usb0";
463 			bias-disable;
464 			input-enable;
465 		};
466 	};
467 };
468 
469 &adc0 {
470 	status = "okay";
471 	vref-supply = <&vcc>;
472 };
473 
474 &i2c0 {
475 	status = "okay";
476 	pinctrl-names = "default";
477 	pinctrl-0 = <&i2c0_pins>;
478 	clock-frequency = <400000>;
479 
480 	mma7455@1d {
481 		compatible = "fsl,mma7455";
482 		reg = <0x1d>;
483 	};
484 
485 	temperature-sensor@48 {
486 		compatible = "national,lm75b";
487 		reg = <0x48>;
488 	};
489 
490 	eeprom@57 {
491 		compatible = "microchip,24c64", "atmel,24c64";
492 		reg = <0x57>;
493 	};
494 };
495 
496 &dac {
497 	status = "okay";
498 	vref-supply = <&vcc>;
499 };
500 
501 &emc {
502 	status = "okay";
503 	pinctrl-names = "default";
504 	pinctrl-0 = <&emc_pins>;
505 
506 	cs0 {
507 		#address-cells = <2>;
508 		#size-cells = <1>;
509 		ranges;
510 
511 		mpmc,cs = <0>;
512 		mpmc,memory-width = <16>;
513 		mpmc,byte-lane-low;
514 		mpmc,write-enable-delay = <0>;
515 		mpmc,output-enable-delay = <0>;
516 		mpmc,read-access-delay = <70>;
517 		mpmc,page-mode-read-delay = <70>;
518 
519 		flash@0,0 {
520 			compatible = "sst,sst39vf320", "cfi-flash";
521 			reg = <0 0 0x400000>;
522 			bank-width = <2>;
523 			#address-cells = <1>;
524 			#size-cells = <1>;
525 
526 			partition@0 {
527 				label = "bootloader";
528 				reg = <0x000000 0x040000>; /* 256 KiB */
529 			};
530 
531 			partition@1 {
532 				label = "kernel";
533 				reg = <0x040000 0x2c0000>; /* 2.75 MiB */
534 			};
535 
536 			partition@2 {
537 				label = "rootfs";
538 				reg = <0x300000 0x100000>; /* 1 MiB */
539 			};
540 		};
541 	};
542 
543 	cs2 {
544 		#address-cells = <2>;
545 		#size-cells = <1>;
546 		ranges;
547 
548 		mpmc,cs = <2>;
549 		mpmc,memory-width = <16>;
550 
551 		mmio_leds: gpio@2,0 {
552 			compatible = "ti,7416374";
553 			reg = <2 0 0x2>;
554 			gpio-controller;
555 			#gpio-cells = <2>;
556 		};
557 
558 	};
559 };
560 
561 &enet_tx_clk {
562 	clock-frequency = <50000000>;
563 };
564 
565 &mac {
566 	status = "okay";
567 	phy-mode = "rmii";
568 	pinctrl-names = "default";
569 	pinctrl-0 = <&enet_rmii_pins>;
570 };
571 
572 &mmcsd {
573 	status = "okay";
574 	bus-width = <4>;
575 	vmmc-supply = <&vmmc>;
576 	pinctrl-names = "default";
577 	pinctrl-0 = <&sdmmc_pins>;
578 };
579 
580 &spifi {
581 	status = "okay";
582 	pinctrl-names = "default";
583 	pinctrl-0 = <&spifi_pins>;
584 
585 	flash {
586 		compatible = "jedec,spi-nor";
587 		spi-cpol;
588 		spi-cpha;
589 		spi-rx-bus-width = <4>;
590 		#address-cells = <1>;
591 		#size-cells = <1>;
592 
593 		partition@0 {
594 			label = "data";
595 			reg = <0 0x200000>;
596 		};
597 	};
598 };
599 
600 &ssp0 {
601 	status = "okay";
602 	pinctrl-names = "default";
603 	pinctrl-0 = <&ssp0_pins>;
604 	num-cs = <1>;
605 };
606 
607 &uart0 {
608 	status = "okay";
609 	pinctrl-names = "default";
610 	pinctrl-0 = <&uart0_pins>;
611 };
612 
613 &uart3 {
614 	status = "okay";
615 	pinctrl-names = "default";
616 	pinctrl-0 = <&uart3_pins>;
617 };
618 
619 &usb0 {
620 	status = "okay";
621 	pinctrl-names = "default";
622 	pinctrl-0 = <&usb0_pins>;
623 };
624