1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * sam9x60ek.dts - Device Tree file for SAM9X60 EK board
4 *
5 * Copyright (C) 2018 Microchip Technology Inc. and its subsidiaries
6 *
7 * Author: Sandeep Sheriker M <Sandeepsheriker.mallikarjun@microchip.com>
8 */
9/dts-v1/;
10#include <dt-bindings/mfd/atmel-flexcom.h>
11#include "sam9x60.dtsi"
12
13/ {
14	model = "Microchip SAM9X60-Ek";
15	compatible = "microchip,sam9x60ek", "microchip,sam9x60", "atmel,at91sam9";
16
17	chosen {
18		stdout-path = &dbgu;
19		i2c0 = &flx0;
20	};
21
22	clocks {
23		slow_xtal: slow_xtal {
24			clock-frequency = <32768>;
25		};
26
27		main_xtal: main_xtal {
28			clock-frequency = <24000000>;
29		};
30	};
31
32	onewire_tm: onewire {
33		gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
34		pinctrl-names = "default";
35		pinctrl-0 = <&pinctrl_onewire_tm_default>;
36		status = "okay";
37
38		w1_eeprom: w1_eeprom@0 {
39			compatible = "maxim,ds24b33";
40			status = "okay";
41		};
42	};
43
44	ahb {
45		apb {
46			qspi: spi@f0014000 {
47				pinctrl-names = "default";
48				pinctrl-0 = <&pinctrl_qspi>;
49				status = "okay";
50
51				nor_flash: sst26vf064@0 {
52					compatible = "jedec,spi-nor";
53					reg = <0>;
54					spi-max-frequency = <80000000>;
55					spi-rx-bus-width = <4>;
56					spi-tx-bus-width = <4>;
57				};
58			};
59
60			flx0: flexcom@f801c600 {
61				atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
62				status = "okay";
63
64				i2c@600 {
65					compatible = "microchip,sam9x60-i2c";
66					reg = <0x600 0x200>;
67					pinctrl-names = "default";
68					pinctrl-0 = <&pinctrl_flx0>;
69					#address-cells = <1>;
70					#size-cells = <0>;
71					clocks = <&pmc PMC_TYPE_PERIPHERAL 5>;
72					status = "okay";
73
74					eeprom@53 {
75						compatible = "atmel,24c02"; /* EEPROM is 2Kbits microchip 24aa025e48, an at24c02 with page size of 16 */
76						reg = <0x53>;
77						pagesize = <16>;
78					};
79				};
80			};
81		};
82	};
83};
84
85&dbgu {
86	pinctrl-names = "default";
87	pinctrl-0 = <&pinctrl_dbgu>;
88};
89
90&ebi {
91	pinctrl-names = "default";
92	pinctrl-0 = <&pinctrl_ebi_addr_nand &pinctrl_ebi_data_0_7>;
93	status = "okay";
94
95	nand_controller: nand-controller {
96		pinctrl-names = "default";
97		pinctrl-0 = <&pinctrl_nand_oe_we &pinctrl_nand_cs &pinctrl_nand_rb>;
98		status = "okay";
99
100		nand@3 {
101			reg = <0x3 0x0 0x800000>;
102			rb-gpios = <&pioD 5 GPIO_ACTIVE_HIGH>;
103			cs-gpios = <&pioD 4 GPIO_ACTIVE_HIGH>;
104			nand-bus-width = <8>;
105			nand-ecc-mode = "hw";
106			nand-ecc-strength = <8>;
107			nand-ecc-step-size = <512>;
108			nand-on-flash-bbt;
109			label = "atmel_nand";
110
111			partitions {
112				compatible = "fixed-partitions";
113				#address-cells = <1>;
114				#size-cells = <1>;
115
116				at91bootstrap@0 {
117					label = "at91bootstrap";
118					reg = <0x0 0x40000>;
119				};
120
121				uboot@40000 {
122					label = "u-boot";
123					reg = <0x40000 0xc0000>;
124				};
125
126				ubootenvred@100000 {
127					label = "U-Boot Env Redundant";
128					reg = <0x100000 0x40000>;
129				};
130
131				ubootenv@140000 {
132					label = "U-Boot Env";
133					reg = <0x140000 0x40000>;
134				};
135
136				dtb@180000 {
137					label = "device tree";
138					reg = <0x180000 0x80000>;
139				};
140
141				kernel@200000 {
142					label = "kernel";
143					reg = <0x200000 0x600000>;
144				};
145
146				rootfs@800000 {
147					label = "rootfs";
148					reg = <0x800000 0x1f800000>;
149				};
150			};
151		};
152	};
153};
154
155&macb0 {
156	phy-mode = "rmii";
157	pinctrl-names = "default";
158	pinctrl-0 = <&pinctrl_macb0_rmii>;
159	status = "okay";
160};
161
162&pinctrl {
163	/* shared pinctrl settings */
164	dbgu {
165		pinctrl_dbgu: dbgu-0 {
166			atmel,pins =
167				<AT91_PIOA 9 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
168				 AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
169		};
170	};
171
172	qspi {
173		pinctrl_qspi: qspi {
174			atmel,pins =
175				<AT91_PIOB 19 AT91_PERIPH_A AT91_PINCTRL_NONE
176				 AT91_PIOB 20 AT91_PERIPH_A AT91_PINCTRL_NONE
177				 AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
178				 AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
179				 AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
180				 AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
181		};
182	};
183
184	nand {
185		pinctrl_nand_oe_we: nand-oe-we-0 {
186			atmel,pins =
187				<AT91_PIOD 0 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
188				 AT91_PIOD 1 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
189		};
190
191		pinctrl_nand_rb: nand-rb-0 {
192			atmel,pins =
193				<AT91_PIOD 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
194		};
195
196		pinctrl_nand_cs: nand-cs-0 {
197			atmel,pins =
198				<AT91_PIOD 4 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
199		};
200	};
201
202	ebi {
203		pinctrl_ebi_data_0_7: ebi-data-lsb-0 {
204			atmel,pins =
205				<AT91_PIOD 6 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
206				 AT91_PIOD 7 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
207				 AT91_PIOD 8 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
208				 AT91_PIOD 9 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
209				 AT91_PIOD 10 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
210				 AT91_PIOD 11 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
211				 AT91_PIOD 12 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
212				 AT91_PIOD 13 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
213		};
214
215		pinctrl_ebi_addr_nand: ebi-addr-0 {
216			atmel,pins =
217				<AT91_PIOD 2 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
218				 AT91_PIOD 3 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
219		};
220	};
221
222	flexcom {
223		pinctrl_flx0: flx0_default {
224			atmel,pins =
225				<AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_NONE
226				 AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_NONE>;
227		};
228	};
229
230	macb0 {
231		pinctrl_macb0_rmii: macb0_rmii-0 {
232			atmel,pins =
233				<AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB0 periph A */
234				 AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB1 periph A */
235				 AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB2 periph A */
236				 AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB3 periph A */
237				 AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB4 periph A */
238				 AT91_PIOB 5 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB5 periph A */
239				 AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB6 periph A */
240				 AT91_PIOB 7 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB7 periph A */
241				 AT91_PIOB 9 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB9 periph A */
242				 AT91_PIOB 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;	/* PB10 periph A */
243		};
244	};
245
246	pinctrl_onewire_tm_default: onewire_tm_default {
247		atmel,pins =
248			<AT91_PIOD 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
249	};
250
251	sdhci0 {
252		pinctrl_sdhci0: sdhci0 {
253			atmel,pins =
254				<AT91_PIOA 17 AT91_PERIPH_A
255				 (AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)	/* PA17 CK  periph A with pullup */
256				 AT91_PIOA 16 AT91_PERIPH_A
257				 (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)	/* PA16 CMD periph A with pullup */
258				 AT91_PIOA 15 AT91_PERIPH_A
259				 (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)	/* PA15 DAT0 periph A */
260				 AT91_PIOA 18 AT91_PERIPH_A
261				 (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)	/* PA18 DAT1 periph A with pullup */
262				 AT91_PIOA 19 AT91_PERIPH_A
263				 (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)	/* PA19 DAT2 periph A with pullup */
264				 AT91_PIOA 20 AT91_PERIPH_A
265				 (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>;	/* PA20 DAT3 periph A with pullup */
266		};
267	};
268
269	sdhci1 {
270		pinctrl_sdhci1: sdhci1 {
271			atmel,pins =
272				<AT91_PIOA 13 AT91_PERIPH_B (AT91_PINCTRL_DRIVE_STRENGTH_HI)				/* PA13 CK periph B */
273				 AT91_PIOA 12 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA12 CMD periph B with pullup */
274				 AT91_PIOA 11 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA11 DAT0 periph B with pullup */
275				 AT91_PIOA 2 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA2 DAT1 periph B with pullup */
276				 AT91_PIOA 3 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA3 DAT2 periph B with pullup */
277				 AT91_PIOA 4 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)>;	/* PA4 DAT3 periph B with pullup */
278		};
279	};
280
281	usb1 {
282		pinctrl_usb_default: usb_default {
283			atmel,pins = <AT91_PIOD 15 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
284				      AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
285		};
286	};
287};
288
289&sdhci0 {
290	pinctrl-names = "default";
291	pinctrl-0 = <&pinctrl_sdhci0>;
292};
293
294&sdhci1 {
295	pinctrl-names = "default";
296	pinctrl-0 = <&pinctrl_sdhci1>;
297};
298
299&usb1 {
300	num-ports = <3>;
301	atmel,vbus-gpio = <0
302			   &pioD 15 GPIO_ACTIVE_HIGH
303			   &pioD 16 GPIO_ACTIVE_HIGH>;
304	pinctrl-names = "default";
305	pinctrl-0 = <&pinctrl_usb_default>;
306	status = "okay";
307};
308
309&usb2 {
310	status = "okay";
311};
312