xref: /linux/arch/arm/boot/dts/microchip/at91-sam9x75_curiosity.dts (revision c34e9ab9a612ee8b18273398ef75c207b01f516d)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * at91-sam9x75_curiosity.dts - Device Tree file for Microchip SAM9X75 Curiosity board
4 *
5 * Copyright (C) 2023 Microchip Technology Inc. and its subsidiaries
6 *
7 * Author: Varshini Rajendran <varshini.rajendran@microchip.com>
8 */
9/dts-v1/;
10#include "sam9x7.dtsi"
11#include <dt-bindings/input/input.h>
12
13/ {
14	model = "Microchip SAM9X75 Curiosity";
15	compatible = "microchip,sam9x75-curiosity", "microchip,sam9x7", "atmel,at91sam9";
16
17	aliases {
18		i2c0 = &i2c6;
19	};
20
21	chosen {
22		stdout-path = "serial0:115200n8";
23	};
24
25	gpio-keys {
26		compatible = "gpio-keys";
27		pinctrl-names = "default";
28		pinctrl-0 = <&pinctrl_key_gpio_default>;
29
30		button-user {
31			label = "USER";
32			gpios = <&pioC 9 GPIO_ACTIVE_LOW>;
33			linux,code = <KEY_0>;
34			wakeup-source;
35		};
36	};
37
38	led-controller {
39		compatible = "gpio-leds";
40
41		led_red: led-red {
42			label = "red";
43			gpios = <&pioC 14 GPIO_ACTIVE_HIGH>;
44			pinctrl-0 = <&pinctrl_red_led_gpio_default>;
45		};
46
47		led_green: led-green {
48			label = "green";
49			gpios = <&pioC 21 GPIO_ACTIVE_HIGH>;
50			pinctrl-0 = <&pinctrl_green_led_gpio_default>;
51		};
52
53		led_blue: led-blue {
54			label = "blue";
55			gpios = <&pioC 20 GPIO_ACTIVE_HIGH>;
56			pinctrl-0 = <&pinctrl_blue_led_gpio_default>;
57			linux,default-trigger = "heartbeat";
58		};
59	};
60
61	memory@20000000 {
62		reg = <0x20000000 0x10000000>;
63		device_type = "memory";
64	};
65};
66
67&classd {
68	pinctrl-names = "default";
69	pinctrl-0 = <&pinctrl_classd_default>;
70	atmel,pwm-type = "diff";
71	atmel,non-overlap-time = <10>;
72	status = "okay";
73};
74
75&dbgu {
76	pinctrl-names = "default";
77	pinctrl-0 = <&pinctrl_dbgu_default>;
78	status = "okay";
79};
80
81&dma0 {
82	status = "okay";
83};
84
85&flx6 {
86	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
87	status = "okay";
88};
89
90&i2c6 {
91	#address-cells = <1>;
92	#size-cells = <0>;
93	pinctrl-names = "default";
94	pinctrl-0 = <&pinctrl_flx6_default>;
95	i2c-analog-filter;
96	i2c-digital-filter;
97	i2c-digital-filter-width-ns = <35>;
98	status = "okay";
99
100	pmic@5b {
101		compatible = "microchip,mcp16502";
102		reg = <0x5b>;
103
104		regulators {
105			vdd_3v3: VDD_IO {
106				regulator-name = "VDD_IO";
107				regulator-min-microvolt = <3300000>;
108				regulator-max-microvolt = <3300000>;
109				regulator-initial-mode = <2>;
110				regulator-allowed-modes = <2>, <4>;
111				regulator-always-on;
112
113				regulator-state-standby {
114					regulator-on-in-suspend;
115					regulator-mode = <4>;
116				};
117
118				regulator-state-mem {
119					regulator-mode = <4>;
120				};
121			};
122
123			vddioddr: VDD_DDR {
124				regulator-name = "VDD_DDR";
125				regulator-min-microvolt = <1350000>;
126				regulator-max-microvolt = <1350000>;
127				regulator-initial-mode = <2>;
128				regulator-allowed-modes = <2>, <4>;
129				regulator-always-on;
130
131				regulator-state-standby {
132					regulator-on-in-suspend;
133					regulator-mode = <4>;
134				};
135
136				regulator-state-mem {
137					regulator-on-in-suspend;
138					regulator-mode = <4>;
139				};
140			};
141
142			vddcore: VDD_CORE {
143				regulator-name = "VDD_CORE";
144				regulator-min-microvolt = <1150000>;
145				regulator-max-microvolt = <1150000>;
146				regulator-initial-mode = <2>;
147				regulator-allowed-modes = <2>, <4>;
148				regulator-always-on;
149
150				regulator-state-standby {
151					regulator-on-in-suspend;
152					regulator-mode = <4>;
153				};
154
155				regulator-state-mem {
156					regulator-mode = <4>;
157				};
158			};
159
160			dcdc4: VDD_OTHER {
161				regulator-name = "VDD_OTHER";
162				regulator-min-microvolt = <1150000>;
163				regulator-max-microvolt = <1150000>;
164				regulator-initial-mode = <2>;
165				regulator-allowed-modes = <2>, <4>;
166				regulator-ramp-delay = <3125>;
167				regulator-always-on;
168
169				regulator-state-standby {
170					regulator-on-in-suspend;
171					regulator-mode = <4>;
172				};
173
174				regulator-state-mem {
175					regulator-mode = <4>;
176				};
177			};
178
179			vldo1: LDO1 {
180				regulator-name = "LDO1";
181				regulator-min-microvolt = <3300000>;
182				regulator-max-microvolt = <3300000>;
183				regulator-always-on;
184
185				regulator-state-standby {
186					regulator-on-in-suspend;
187				};
188			};
189
190			vldo2: LDO2 {
191				regulator-name = "LDO2";
192				regulator-min-microvolt = <1800000>;
193				regulator-max-microvolt = <1800000>;
194
195				regulator-state-standby {
196					regulator-on-in-suspend;
197				};
198			};
199		};
200	};
201};
202
203&i2s {
204	pinctrl-names = "default";
205	pinctrl-0 = <&pinctrl_i2s_default>;
206	#sound-dai-cells = <0>;
207	status = "okay";
208};
209
210&main_xtal {
211	clock-frequency = <24000000>;
212};
213
214&pinctrl {
215	classd {
216		pinctrl_classd_default: classd-default {
217			atmel,pins =
218				<AT91_PIOA 18 AT91_PERIPH_C AT91_PINCTRL_PULL_UP>,
219				<AT91_PIOA 19 AT91_PERIPH_C AT91_PINCTRL_PULL_DOWN>;
220		};
221	};
222
223	dbgu {
224		pinctrl_dbgu_default: dbgu-default {
225			atmel,pins = <AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
226				     <AT91_PIOA 27 AT91_PERIPH_A AT91_PINCTRL_NONE>;
227		};
228	};
229
230	flexcom {
231		pinctrl_flx6_default: flx6-default {
232			atmel,pins =
233				<AT91_PIOA 24 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
234				<AT91_PIOA 25 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
235		};
236	};
237
238	gpio-keys {
239		pinctrl_key_gpio_default: key-gpio-default {
240			atmel,pins = <AT91_PIOC 9 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
241		};
242	};
243
244	i2s {
245		pinctrl_i2s_default: i2s-default {
246			atmel,pins =
247				<AT91_PIOB 26 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SCK */
248				<AT91_PIOB 15 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SWS */
249				<AT91_PIOB 16 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SDIN */
250				<AT91_PIOB 17 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SDOUT */
251				<AT91_PIOB 25 AT91_PERIPH_D AT91_PINCTRL_NONE>;		/* I2SMCK */
252		};
253	};
254
255	led-controller {
256		pinctrl_red_led_gpio_default: red-led-gpio-default {
257			atmel,pins = <AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
258		};
259		pinctrl_green_led_gpio_default: green-led-gpio-default {
260			atmel,pins = <AT91_PIOC 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
261		};
262		pinctrl_blue_led_gpio_default: blue-led-gpio-default {
263			atmel,pins = <AT91_PIOC 20 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
264		};
265	};
266
267	sdmmc0 {
268		pinctrl_sdmmc0_default: sdmmc0-default {
269			atmel,pins =
270				<AT91_PIOA 2 AT91_PERIPH_A (AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,				/* PA2 CK  periph A with pullup */
271				<AT91_PIOA 1 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA1 CMD periph A with pullup */
272				<AT91_PIOA 0 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA0 DAT0 periph A */
273				<AT91_PIOA 3 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA3 DAT1 periph A with pullup */
274				<AT91_PIOA 4 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA4 DAT2 periph A with pullup */
275				<AT91_PIOA 5 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>;	/* PA5 DAT3 periph A with pullup */
276		};
277	};
278}; /* pinctrl */
279
280&poweroff {
281	debounce-delay-us = <976>;
282	status = "okay";
283
284	input@0 {
285		reg = <0>;
286	};
287};
288
289&rtt {
290	atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
291};
292
293&sdmmc0 {
294	bus-width = <4>;
295	pinctrl-names = "default";
296	pinctrl-0 = <&pinctrl_sdmmc0_default>;
297	cd-gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
298	disable-wp;
299	status = "okay";
300};
301
302&slow_xtal {
303	clock-frequency = <32768>;
304};
305
306&tcb {
307	timer0: timer@0 {
308		compatible = "atmel,tcb-timer";
309		reg = <0>;
310	};
311
312	timer1: timer@1 {
313		compatible = "atmel,tcb-timer";
314		reg = <1>;
315	};
316};
317
318&trng {
319	status = "okay";
320};
321
322&watchdog {
323	status = "okay";
324};
325