1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * at91-sama5d3_xplained.dts - Device Tree file for the SAMA5D3 Xplained board
4 *
5 *  Copyright (C) 2014 Atmel,
6 *		  2014 Nicolas Ferre <nicolas.ferre@atmel.com>
7 */
8/dts-v1/;
9#include "sama5d36.dtsi"
10#include <dt-bindings/input/input.h>
11
12/ {
13	model = "SAMA5D3 Xplained";
14	compatible = "atmel,sama5d3-xplained", "atmel,sama5d3", "atmel,sama5";
15
16	chosen {
17		stdout-path = "serial0:115200n8";
18	};
19
20	memory@20000000 {
21		reg = <0x20000000 0x10000000>;
22	};
23
24	clocks {
25		slow_xtal {
26			clock-frequency = <32768>;
27		};
28
29		main_xtal {
30			clock-frequency = <12000000>;
31		};
32	};
33
34	ahb {
35		apb {
36			mmc0: mmc@f0000000 {
37				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
38				vmmc-supply = <&vcc_mmc0_reg>;
39				vqmmc-supply = <&vcc_3v3_reg>;
40				status = "okay";
41				slot@0 {
42					reg = <0>;
43					bus-width = <8>;
44					cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
45				};
46			};
47
48			mmc1: mmc@f8000000 {
49				vmmc-supply = <&vcc_3v3_reg>;
50				vqmmc-supply = <&vcc_3v3_reg>;
51				status = "disabled";
52				slot@0 {
53					reg = <0>;
54					bus-width = <4>;
55					cd-gpios = <&pioE 1 GPIO_ACTIVE_LOW>;
56				};
57			};
58
59			spi0: spi@f0004000 {
60				pinctrl-names = "default", "cs";
61				pinctrl-1 = <&pinctrl_spi0_cs>;
62				cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
63				status = "okay";
64			};
65
66			can0: can@f000c000 {
67				status = "okay";
68			};
69
70			tcb0: timer@f0010000 {
71				timer0: timer@0 {
72					compatible = "atmel,tcb-timer";
73					reg = <0>;
74				};
75
76				timer1: timer@1 {
77					compatible = "atmel,tcb-timer";
78					reg = <1>;
79				};
80			};
81
82			i2c0: i2c@f0014000 {
83				pinctrl-0 = <&pinctrl_i2c0_pu>;
84				status = "okay";
85			};
86
87			i2c1: i2c@f0018000 {
88				status = "okay";
89
90				pmic: act8865@5b {
91					compatible = "active-semi,act8865";
92					reg = <0x5b>;
93					status = "disabled";
94
95					regulators {
96						vcc_1v8_reg: DCDC_REG1 {
97							regulator-name = "VCC_1V8";
98							regulator-min-microvolt = <1800000>;
99							regulator-max-microvolt = <1800000>;
100							regulator-always-on;
101						};
102
103						vcc_1v2_reg: DCDC_REG2 {
104							regulator-name = "VCC_1V2";
105							regulator-min-microvolt = <1200000>;
106							regulator-max-microvolt = <1200000>;
107							regulator-always-on;
108						};
109
110						vcc_3v3_reg: DCDC_REG3 {
111							regulator-name = "VCC_3V3";
112							regulator-min-microvolt = <3300000>;
113							regulator-max-microvolt = <3300000>;
114							regulator-always-on;
115						};
116
117						vddfuse_reg: LDO_REG1 {
118							regulator-name = "FUSE_2V5";
119							regulator-min-microvolt = <2500000>;
120							regulator-max-microvolt = <2500000>;
121						};
122
123						vddana_reg: LDO_REG2 {
124							regulator-name = "VDDANA";
125							regulator-min-microvolt = <3300000>;
126							regulator-max-microvolt = <3300000>;
127							regulator-always-on;
128						};
129					};
130				};
131			};
132
133			macb0: ethernet@f0028000 {
134				phy-mode = "rgmii-rxid";
135				#address-cells = <1>;
136				#size-cells = <0>;
137				status = "okay";
138
139				ethernet-phy@7 {
140					reg = <0x7>;
141				};
142			};
143
144			pwm0: pwm@f002c000 {
145				pinctrl-names = "default";
146				pinctrl-0 = <&pinctrl_pwm0_pwmh0_0 &pinctrl_pwm0_pwmh1_0>;
147				status = "okay";
148			};
149
150			usart0: serial@f001c000 {
151				status = "okay";
152			};
153
154			usart1: serial@f0020000 {
155				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
156				status = "okay";
157			};
158
159			uart0: serial@f0024000 {
160				status = "okay";
161			};
162
163			mmc1: mmc@f8000000 {
164				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
165				status = "okay";
166				slot@0 {
167					reg = <0>;
168					bus-width = <4>;
169					cd-gpios = <&pioE 1 GPIO_ACTIVE_HIGH>;
170				};
171			};
172
173			spi1: spi@f8008000 {
174				pinctrl-names = "default", "cs";
175				pinctrl-1 = <&pinctrl_spi1_cs>;
176				cs-gpios = <&pioC 25 0>;
177				status = "okay";
178			};
179
180			adc0: adc@f8018000 {
181				atmel,adc-vref = <3300>;
182				atmel,adc-channels-used = <0xfe>;
183				pinctrl-0 = <
184					&pinctrl_adc0_adtrg
185					&pinctrl_adc0_ad1
186					&pinctrl_adc0_ad2
187					&pinctrl_adc0_ad3
188					&pinctrl_adc0_ad4
189					&pinctrl_adc0_ad5
190					&pinctrl_adc0_ad6
191					&pinctrl_adc0_ad7
192					>;
193				status = "okay";
194			};
195
196			i2c2: i2c@f801c000 {
197				dmas = <0>, <0>;	/* Do not use DMA for i2c2 */
198				pinctrl-0 = <&pinctrl_i2c2_pu>;
199				status = "okay";
200			};
201
202			macb1: ethernet@f802c000 {
203				phy-mode = "rmii";
204				#address-cells = <1>;
205				#size-cells = <0>;
206				status = "okay";
207
208				ethernet-phy@1 {
209					reg = <0x1>;
210				};
211			};
212
213			dbgu: serial@ffffee00 {
214				status = "okay";
215			};
216
217			pinctrl@fffff200 {
218				board {
219					pinctrl_i2c0_pu: i2c0_pu {
220						atmel,pins =
221							<AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
222							<AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
223					};
224
225					pinctrl_i2c2_pu: i2c2_pu {
226						atmel,pins =
227							<AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>,
228							<AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
229					};
230
231					pinctrl_key_gpio: key_gpio_0 {
232						atmel,pins =
233							<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
234					};
235
236					pinctrl_mmc0_cd: mmc0_cd {
237						atmel,pins =
238							<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
239					};
240
241					pinctrl_mmc1_cd: mmc1_cd {
242						atmel,pins =
243							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
244					};
245
246					pinctrl_usba_vbus: usba_vbus {
247						atmel,pins =
248							<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PE9, conflicts with A9 */
249					};
250					pinctrl_usb_default: usb_default {
251						atmel,pins =
252							<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
253							 AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
254					};
255
256					pinctrl_gpio_leds: gpio_leds_default {
257						atmel,pins =
258							<AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
259							 AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
260					};
261
262					pinctrl_spi0_cs: spi0_cs_default {
263						atmel,pins =
264							<AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
265							 AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
266					};
267
268					pinctrl_spi1_cs: spi1_cs_default {
269						atmel,pins = <AT91_PIOC 25 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
270					};
271
272					pinctrl_vcc_mmc0_reg_gpio: vcc_mmc0_reg_gpio_default {
273						atmel,pins = <AT91_PIOE 2 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
274					};
275				};
276			};
277		};
278
279		usb0: gadget@500000 {
280			atmel,vbus-gpio = <&pioE 9 GPIO_ACTIVE_HIGH>;	/* PE9, conflicts with A9 */
281			pinctrl-names = "default";
282			pinctrl-0 = <&pinctrl_usba_vbus>;
283			status = "okay";
284		};
285
286		usb1: ohci@600000 {
287			num-ports = <3>;
288			atmel,vbus-gpio = <0
289					   &pioE 3 GPIO_ACTIVE_LOW
290					   &pioE 4 GPIO_ACTIVE_LOW
291					  >;
292			pinctrl-names = "default";
293			pinctrl-0 = <&pinctrl_usb_default>;
294			status = "okay";
295		};
296
297		usb2: ehci@700000 {
298			status = "okay";
299		};
300
301		ebi: ebi@10000000 {
302			pinctrl-0 = <&pinctrl_ebi_nand_addr>;
303			pinctrl-names = "default";
304			status = "okay";
305
306			nand_controller: nand-controller {
307				status = "okay";
308
309				nand@3 {
310					reg = <0x3 0x0 0x2>;
311					atmel,rb = <0>;
312					nand-bus-width = <8>;
313					nand-ecc-mode = "hw";
314					nand-ecc-strength = <4>;
315					nand-ecc-step-size = <512>;
316					nand-on-flash-bbt;
317					label = "atmel_nand";
318
319					partitions {
320						compatible = "fixed-partitions";
321						#address-cells = <1>;
322						#size-cells = <1>;
323
324						at91bootstrap@0 {
325							label = "at91bootstrap";
326							reg = <0x0 0x40000>;
327						};
328
329						bootloader@40000 {
330							label = "bootloader";
331							reg = <0x40000 0xc0000>;
332						};
333
334						bootloaderenvred@100000 {
335							label = "bootloader env redundant";
336							reg = <0x100000 0x40000>;
337						};
338
339						bootloaderenv@140000 {
340							label = "bootloader env";
341							reg = <0x140000 0x40000>;
342						};
343
344						dtb@180000 {
345							label = "device tree";
346							reg = <0x180000 0x80000>;
347						};
348
349						kernel@200000 {
350							label = "kernel";
351							reg = <0x200000 0x600000>;
352						};
353
354						rootfs@800000 {
355							label = "rootfs";
356							reg = <0x800000 0x0f800000>;
357						};
358					};
359				};
360			};
361		};
362	};
363
364	vcc_mmc0_reg: fixedregulator_mmc0 {
365		compatible = "regulator-fixed";
366		pinctrl-names = "default";
367		pinctrl-0 = <&pinctrl_vcc_mmc0_reg_gpio>;
368		gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
369		regulator-name = "mmc0-card-supply";
370		regulator-min-microvolt = <3300000>;
371		regulator-max-microvolt = <3300000>;
372		regulator-always-on;
373	};
374
375	gpio-keys {
376		compatible = "gpio-keys";
377
378		pinctrl-names = "default";
379		pinctrl-0 = <&pinctrl_key_gpio>;
380
381		button {
382			label = "PB_USER";
383			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
384			linux,code = <KEY_PROG1>;
385			wakeup-source;
386		};
387	};
388
389	leds {
390		compatible = "gpio-leds";
391		pinctrl-names = "default";
392		pinctrl-0 = <&pinctrl_gpio_leds>;
393		status = "okay";
394
395		led-d2 {
396			label = "d2";
397			gpios = <&pioE 23 GPIO_ACTIVE_LOW>;	/* PE23, conflicts with A23, CTS2 */
398			linux,default-trigger = "heartbeat";
399		};
400
401		led-d3 {
402			label = "d3"; /* Conflict with EBI CS0, USART2 CTS. */
403			gpios = <&pioE 24 GPIO_ACTIVE_HIGH>;
404		};
405	};
406};
407