1/*
2 * Copyright (c) 2020 Google LLC.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8#include <atmel/samd21.dtsi>
9#include <atmel/samx2xx18.dtsi>
10#include "arduino_nano_33_iot-pinctrl.dtsi"
11#include "arduino_nano_r3_connector.dtsi"
12
13/ {
14	model = "Arduino Nano 33 IOT";
15	compatible = "arduino,nano-33-iot";
16
17	chosen {
18		zephyr,console = &sercom5;
19		zephyr,shell-uart = &sercom5;
20		zephyr,sram = &sram0;
21		zephyr,flash = &flash0;
22		zephyr,code-partition = &code_partition;
23	};
24
25	leds {
26		compatible = "gpio-leds";
27		led0: led_0 {
28			gpios = <&porta 17 0>;
29			label = "LED";
30		};
31	};
32
33	pwmleds {
34		compatible = "pwm-leds";
35
36		pwm_led0: pwm_led_0 {
37			pwms = <&tcc2 1 PWM_MSEC(20)>;
38		};
39	};
40
41	aliases {
42		led0 = &led0;
43		pwm-led0 = &pwm_led0;
44	};
45};
46
47&cpu0 {
48	clock-frequency = <48000000>;
49};
50
51&sercom1 {
52	status = "okay";
53	compatible = "atmel,sam0-spi";
54	dipo = <0>;
55	dopo = <1>;
56	#address-cells = <1>;
57	#size-cells = <0>;
58
59	pinctrl-0 = <&sercom1_spi_default>;
60	pinctrl-names = "default";
61};
62
63&sercom2 {
64	status = "okay";
65	compatible = "atmel,sam0-spi";
66	dipo = <1>;
67	dopo = <3>;
68	#address-cells = <1>;
69	#size-cells = <0>;
70
71	pinctrl-0 = <&sercom2_spi_default>;
72	pinctrl-names = "default";
73
74	cs-gpios = <&porta 14 GPIO_ACTIVE_LOW>;
75
76	nina_w102@0 {
77		compatible = "u-blox,nina";
78		reg = <0>;
79		spi-max-frequency = <8000000>;
80		ready-gpios = <&porta 28 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
81		reset-gpios = <&porta 8 GPIO_ACTIVE_LOW>;
82		irq-gpios = <&porta 27 GPIO_PULL_DOWN>;
83	};
84};
85
86&sercom3 {
87	status = "okay";
88	compatible = "atmel,sam0-uart";
89	current-speed = <115200>;
90	rxpo = <1>;
91	txpo = <0>;
92
93	pinctrl-0 = <&sercom3_uart_default>;
94	pinctrl-names = "default";
95
96	nina_prog {
97		compatible = "espressif,esp-at";
98		reset-gpios = <&porta 8 GPIO_ACTIVE_LOW>;
99	};
100};
101
102&sercom4 {
103	status = "okay";
104	compatible = "atmel,sam0-i2c";
105	clock-frequency = <I2C_BITRATE_FAST>;
106	#address-cells = <1>;
107	#size-cells = <0>;
108
109	pinctrl-0 = <&sercom4_i2c_default>;
110	pinctrl-names = "default";
111
112	lsm6ds3@6a {
113		compatible = "st,lsm6ds3";
114		reg = <0x6a>;
115	};
116
117	atecc608a@6a {
118		compatible = "atmel,atecc608";
119		reg = <0x6a>;
120	};
121};
122
123&sercom5 {
124	status = "okay";
125	compatible = "atmel,sam0-uart";
126	current-speed = <115200>;
127	rxpo = <3>;
128	txpo = <1>;
129
130	pinctrl-0 = <&sercom5_uart_default>;
131	pinctrl-names = "default";
132};
133
134&tcc2 {
135	status = "okay";
136	compatible = "atmel,sam0-tcc-pwm";
137	prescaler = <1024>;
138	#pwm-cells = <2>;
139
140	pinctrl-0 = <&pwm_default>;
141	pinctrl-names = "default";
142};
143
144&flash0 {
145	partitions {
146		compatible = "fixed-partitions";
147		#address-cells = <1>;
148		#size-cells = <1>;
149
150		boot_partition: partition@0 {
151			label = "uf2";
152			reg = <0x00000000 0x2000>;
153			read-only;
154		};
155
156		code_partition: partition@2000 {
157			label = "code";
158			reg = <0x2000 0x3A000>;
159			read-only;
160		};
161
162		/*
163		 * The final 16 KiB is reserved for the application.
164		 * Storage partition will be used by FCB/LittleFS/NVS
165		 * if enabled.
166		 */
167		storage_partition: partition@3c000 {
168			label = "storage";
169			reg = <0x0003c000 0x00004000>;
170		};
171	};
172};
173
174zephyr_udc0: &usb0 {
175	status = "okay";
176
177	pinctrl-0 = <&usb_dc_default>;
178	pinctrl-names = "default";
179};
180