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	lm75@48 {
486		compatible = "nxp,lm75";
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