1// SPDX-License-Identifier: (GPL-2.0+ OR X11)
2/*
3 * at91-sama5d2_ptc_ek.dts - Device Tree file for SAMA5D2 PTC EK board
4 *
5 *  Copyright (C) 2017 Microchip/Atmel,
6 *		  2017 Wenyou Yang <wenyou.yang@microchip.com>
7 *		  2017 Ludovic Desroches <ludovic.desroches@microchip.com>
8 */
9/dts-v1/;
10#include "sama5d2.dtsi"
11#include "sama5d2-pinfunc.h"
12#include <dt-bindings/mfd/atmel-flexcom.h>
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/pinctrl/at91.h>
16
17/ {
18	model = "Atmel SAMA5D2 PTC EK";
19	compatible = "atmel,sama5d2-ptc_ek", "atmel,sama5d2", "atmel,sama5";
20
21	aliases {
22		serial0 = &uart0;	/* DBGU */
23		i2c0 = &i2c0;	/* mikroBUS 1 */
24		i2c1 = &i2c1;	/* XPRO EXT1 */
25		i2c2 = &i2c2;
26	};
27
28	chosen {
29		stdout-path = "serial0:115200n8";
30	};
31
32	clocks {
33		slow_xtal {
34			clock-frequency = <32768>;
35		};
36
37		main_xtal {
38			clock-frequency = <24000000>;
39		};
40	};
41
42	ahb {
43		usb0: gadget@300000 {
44			atmel,vbus-gpio = <&pioA PIN_PB11 GPIO_ACTIVE_HIGH>;
45			pinctrl-names = "default";
46			pinctrl-0 = <&pinctrl_usba_vbus>;
47			status = "okay";
48		};
49
50		usb1: ohci@400000 {
51			num-ports = <3>;
52			atmel,vbus-gpio = <0
53					   &pioA PIN_PB12 GPIO_ACTIVE_HIGH
54					   0
55					  >;
56			pinctrl-names = "default";
57			pinctrl-0 = <&pinctrl_usb_default>;
58			status = "okay";
59		};
60
61		usb2: ehci@500000 {
62			status = "okay";
63		};
64
65		ebi: ebi@10000000 {
66			pinctrl-names = "default";
67			pinctrl-0 = <&pinctrl_nand_default>;
68			status = "okay"; /* conflicts with sdmmc1 and qspi0 */
69
70			nand_controller: nand-controller {
71				status = "okay";
72
73				nand@3 {
74					reg = <0x3 0x0 0x2>;
75					atmel,rb = <0>;
76					nand-bus-width = <8>;
77					nand-ecc-mode = "hw";
78					nand-on-flash-bbt;
79					label = "atmel_nand";
80
81					partitions {
82						compatible = "fixed-partitions";
83						#address-cells = <1>;
84						#size-cells = <1>;
85
86						at91bootstrap@0 {
87							label = "bootstrap";
88							reg = <0x0 0x40000>;
89						};
90
91						bootloader@40000 {
92							label = "bootloader";
93							reg = <0x40000 0xc0000>;
94						};
95
96						bootloaderenvred@100000 {
97							label = "bootloader env redundant";
98							reg = <0x100000 0x40000>;
99						};
100
101						bootloaderenv@140000 {
102							label = "bootloader env";
103							reg = <0x140000 0x40000>;
104						};
105
106						dtb@180000 {
107							label = "device tree";
108							reg = <0x180000 0x80000>;
109						};
110
111						kernel@200000 {
112							label = "kernel";
113							reg = <0x200000 0x600000>;
114						};
115
116						rootfs@800000 {
117							label = "rootfs";
118							reg = <0x800000 0x1f800000>;
119						};
120					};
121				};
122			};
123		};
124
125		sdmmc0: sdio-host@a0000000 {
126			bus-width = <8>;
127			pinctrl-names = "default";
128			pinctrl-0 = <&pinctrl_sdmmc0_default>;
129			status = "okay";
130		};
131
132		apb {
133			spi0: spi@f8000000 {
134				pinctrl-names = "default";
135				pinctrl-0 = <&pinctrl_spi0_default>;
136				status = "okay";
137			};
138
139			macb0: ethernet@f8008000 {
140				pinctrl-names = "default";
141				pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq>;
142				#address-cells = <1>;
143				#size-cells = <0>;
144				phy-mode = "rmii";
145				status = "okay";
146
147				ethernet-phy@1 {
148					reg = <0x1>;
149					interrupt-parent = <&pioA>;
150					interrupts = <56 IRQ_TYPE_LEVEL_LOW>;
151				};
152			};
153
154			tcb0: timer@f800c000 {
155				timer0: timer@0 {
156					compatible = "atmel,tcb-timer";
157					reg = <0>;
158				};
159
160				timer1: timer@1 {
161					compatible = "atmel,tcb-timer";
162					reg = <1>;
163				};
164			};
165
166			uart0: serial@f801c000 {
167				pinctrl-names = "default";
168				pinctrl-0 = <&pinctrl_uart0_default>;
169				atmel,use-dma-rx;
170				atmel,use-dma-tx;
171				status = "okay";
172			};
173
174			uart2: serial@f8024000 {
175				pinctrl-names = "default";
176				pinctrl-0 = <&pinctrl_uart2_default>;
177				atmel,use-dma-rx;
178				atmel,use-dma-tx;
179				status = "okay";
180			};
181
182			i2c0: i2c@f8028000 {
183				dmas = <0>, <0>;
184				pinctrl-names = "default", "gpio";
185				pinctrl-0 = <&pinctrl_i2c0_default>;
186				pinctrl-1 = <&pinctrl_i2c0_gpio>;
187				sda-gpios = <&pioA PIN_PD21 GPIO_ACTIVE_HIGH>;
188				scl-gpios = <&pioA PIN_PD22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
189				status = "okay";
190			};
191
192			flx0: flexcom@f8034000 {
193				atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
194				status = "okay";
195
196				i2c2: i2c@600 {
197					dmas = <0>, <0>;
198					pinctrl-names = "default", "gpio";
199					pinctrl-0 = <&pinctrl_flx0_default>;
200					pinctrl-1 = <&pinctrl_flx0_gpio>;
201					sda-gpios = <&pioA PIN_PB28 GPIO_ACTIVE_HIGH>;
202					scl-gpios = <&pioA PIN_PB29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
203					status = "okay";
204				};
205			};
206
207			poweroff@f8048010 {
208				debounce-delay-us = <976>;
209
210				input@0 {
211					reg = <0>;
212				};
213			};
214
215			watchdog@f8048040 {
216				status = "okay";
217			};
218
219			spi1: spi@fc000000 {
220				pinctrl-names = "default";
221				pinctrl-0 = <&pinctrl_spi1_default>;
222				status = "okay";
223			};
224
225			i2c1: i2c@fc028000 {
226				dmas = <0>, <0>;
227				pinctrl-names = "default", "gpio";
228				pinctrl-0 = <&pinctrl_i2c1_default>;
229				pinctrl-1 = <&pinctrl_i2c1_gpio>;
230				sda-gpios = <&pioA PIN_PC6 GPIO_ACTIVE_HIGH>;
231				scl-gpios = <&pioA PIN_PC7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
232				status = "okay";
233
234				at24@50 {
235					compatible = "atmel,24c02";
236					reg = <0x50>;
237					pagesize = <8>;
238				};
239			};
240
241			pinctrl@fc038000 {
242				pinctrl_flx0_default: flx0_default {
243					pinmux = <PIN_PB28__FLEXCOM0_IO0>,
244						 <PIN_PB29__FLEXCOM0_IO1>;
245					bias-disable;
246				};
247
248				pinctrl_flx0_gpio: flx0_gpio {
249					pinmux = <PIN_PB28__GPIO>,
250						 <PIN_PB29__GPIO>;
251					bias-disable;
252				};
253
254				pinctrl_i2c0_default: i2c0_default {
255					pinmux = <PIN_PD21__TWD0>,
256						 <PIN_PD22__TWCK0>;
257					bias-disable;
258				};
259
260				pinctrl_i2c0_gpio: i2c0_gpio {
261					pinmux = <PIN_PD21__GPIO>,
262						 <PIN_PD22__GPIO>;
263					bias-disable;
264				};
265
266				pinctrl_i2c1_default: i2c1_default {
267					pinmux = <PIN_PC6__TWD1>,
268						 <PIN_PC7__TWCK1>;
269					bias-disable;
270				};
271
272				pinctrl_i2c1_gpio: i2c1_gpio {
273					pinmux = <PIN_PC6__GPIO>,
274						 <PIN_PC7__GPIO>;
275					bias-disable;
276				};
277
278				pinctrl_key_gpio_default: key_gpio_default {
279					pinmux = <PIN_PA10__GPIO>;
280					bias-pull-up;
281				};
282
283				pinctrl_led_gpio_default: led_gpio_default {
284					pinmux = <PIN_PB6__GPIO>,
285						 <PIN_PB8__GPIO>,
286						 <PIN_PB10__GPIO>;
287					bias-pull-up;
288				};
289
290				pinctrl_macb0_default: macb0_default {
291					pinmux = <PIN_PB14__GTXCK>,
292						 <PIN_PB15__GTXEN>,
293						 <PIN_PB16__GRXDV>,
294						 <PIN_PB17__GRXER>,
295						 <PIN_PB18__GRX0>,
296						 <PIN_PB19__GRX1>,
297						 <PIN_PB20__GTX0>,
298						 <PIN_PB21__GTX1>,
299						 <PIN_PB22__GMDC>,
300						 <PIN_PB23__GMDIO>;
301					bias-disable;
302				};
303
304				pinctrl_macb0_phy_irq: macb0_phy_irq {
305					pinmux = <PIN_PB24__GPIO>;
306					bias-disable;
307				};
308
309				pinctrl_nand_default: nand_default {
310					re_we_data {
311						pinmux = <PIN_PA22__D0>,
312							 <PIN_PA23__D1>,
313							 <PIN_PA24__D2>,
314							 <PIN_PA25__D3>,
315							 <PIN_PA26__D4>,
316							 <PIN_PA27__D5>,
317							 <PIN_PA28__D6>,
318							 <PIN_PA29__D7>,
319							 <PIN_PA30__NWE_NANDWE>,
320							 <PIN_PB2__NRD_NANDOE>;
321						bias-pull-up;
322						atmel,drive-strength = <ATMEL_PIO_DRVSTR_ME>;
323					};
324
325					ale_cle_rdy_cs {
326						pinmux = <PIN_PB0__A21_NANDALE>,
327							 <PIN_PB1__A22_NANDCLE>,
328							 <PIN_PC8__NANDRDY>,
329							 <PIN_PA31__NCS3>;
330						bias-pull-up;
331					};
332				};
333
334				pinctrl_sdmmc0_default: sdmmc0_default {
335					cmd_data {
336						pinmux = <PIN_PA1__SDMMC0_CMD>,
337							 <PIN_PA2__SDMMC0_DAT0>,
338							 <PIN_PA3__SDMMC0_DAT1>,
339							 <PIN_PA4__SDMMC0_DAT2>,
340							 <PIN_PA5__SDMMC0_DAT3>,
341							 <PIN_PA6__SDMMC0_DAT4>,
342							 <PIN_PA7__SDMMC0_DAT5>,
343							 <PIN_PA8__SDMMC0_DAT6>,
344							 <PIN_PA9__SDMMC0_DAT7>;
345						bias-pull-up;
346					};
347
348					ck_cd_vddsel {
349						pinmux = <PIN_PA0__SDMMC0_CK>,
350							 <PIN_PA11__SDMMC0_VDDSEL>,
351							 <PIN_PA13__SDMMC0_CD>;
352						bias-disable;
353					};
354				};
355
356				pinctrl_spi0_default: spi0_default {
357					pinmux = <PIN_PA14__SPI0_SPCK>,
358						 <PIN_PA15__SPI0_MOSI>,
359						 <PIN_PA16__SPI0_MISO>,
360						 <PIN_PA17__SPI0_NPCS0>;
361					bias-disable;
362				};
363
364				pinctrl_spi1_default: spi1_default {
365					pinmux = <PIN_PC1__SPI1_SPCK>,
366						 <PIN_PC2__SPI1_MOSI>,
367						 <PIN_PC3__SPI1_MISO>,
368						 <PIN_PC4__SPI1_NPCS0>;
369					bias-disable;
370				};
371
372				pinctrl_uart0_default: uart0_default {
373					pinmux = <PIN_PB26__URXD0>,
374						 <PIN_PB27__UTXD0>;
375					bias-disable;
376				};
377
378				pinctrl_uart2_default: uart2_default {
379					pinmux = <PIN_PD23__URXD2>,
380						 <PIN_PD24__UTXD2>;
381					bias-disable;
382				};
383
384				pinctrl_usb_default: usb_default {
385					pinmux = <PIN_PB12__GPIO>;
386					bias-disable;
387				};
388
389				pinctrl_usba_vbus: usba_vbus {
390					pinmux = <PIN_PB11__GPIO>;
391					bias-disable;
392				};
393
394			};
395
396		};
397	};
398
399	gpio-keys {
400		compatible = "gpio-keys";
401
402		pinctrl-names = "default";
403		pinctrl-0 = <&pinctrl_key_gpio_default>;
404
405		button-1 {
406			label = "PB_USER";
407			gpios = <&pioA PIN_PA10 GPIO_ACTIVE_LOW>;
408			linux,code = <KEY_PROG1>;
409			wakeup-source;
410		};
411	};
412
413	leds {
414		compatible = "gpio-leds";
415		pinctrl-names = "default";
416		pinctrl-0 = <&pinctrl_led_gpio_default>;
417		status = "okay";
418
419		led-red {
420			label = "red";
421			gpios = <&pioA PIN_PB10 GPIO_ACTIVE_HIGH>;
422		};
423
424		led-green {
425			label = "green";
426			gpios = <&pioA PIN_PB8 GPIO_ACTIVE_HIGH>;
427		};
428
429		led-blue {
430			label = "blue";
431			gpios = <&pioA PIN_PB6 GPIO_ACTIVE_HIGH>;
432			linux,default-trigger = "heartbeat";
433		};
434	};
435};
436