/*
 * Copyright (c) 2020 Google LLC.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <atmel/samd21.dtsi>
#include "arduino_nano_33_iot-pinctrl.dtsi"
#include "arduino_nano_r3_connector.dtsi"

/ {
	model = "Arduino Nano 33 IOT";
	compatible = "arduino,nano-33-iot";

	chosen {
		zephyr,console = &sercom5;
		zephyr,shell-uart = &sercom5;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &code_partition;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&porta 17 0>;
			label = "LED";
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		pwm_led0: pwm_led_0 {
			pwms = <&tcc2 1 PWM_MSEC(20)>;
		};
	};

	aliases {
		led0 = &led0;
		pwm-led0 = &pwm_led0;
	};
};

&cpu0 {
	clock-frequency = <48000000>;
};

&sercom1 {
	status = "okay";
	compatible = "atmel,sam0-spi";
	dipo = <0>;
	dopo = <1>;
	#address-cells = <1>;
	#size-cells = <0>;

	pinctrl-0 = <&sercom1_spi_default>;
	pinctrl-names = "default";
};

&sercom2 {
	status = "okay";
	compatible = "atmel,sam0-spi";
	dipo = <1>;
	dopo = <3>;
	#address-cells = <1>;
	#size-cells = <0>;

	pinctrl-0 = <&sercom2_spi_default>;
	pinctrl-names = "default";

	cs-gpios = <&porta 14 GPIO_ACTIVE_LOW>;

	nina_w102@0 {
		compatible = "u-blox,nina";
		reg = <0>;
		spi-max-frequency = <8000000>;
		ready-gpios = <&porta 28 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
		reset-gpios = <&porta 8 GPIO_ACTIVE_LOW>;
		irq-gpios = <&porta 27 GPIO_PULL_DOWN>;
	};
};

&sercom3 {
	status = "okay";
	compatible = "atmel,sam0-uart";
	current-speed = <115200>;
	rxpo = <1>;
	txpo = <0>;

	pinctrl-0 = <&sercom3_uart_default>;
	pinctrl-names = "default";

	nina_prog {
		compatible = "espressif,esp-at";
		reset-gpios = <&porta 8 GPIO_ACTIVE_LOW>;
	};
};

&sercom4 {
	status = "okay";
	compatible = "atmel,sam0-i2c";
	clock-frequency = <I2C_BITRATE_FAST>;
	#address-cells = <1>;
	#size-cells = <0>;

	pinctrl-0 = <&sercom4_i2c_default>;
	pinctrl-names = "default";

	lsm6ds3@6a {
		compatible = "st,lsm6ds3";
		reg = <0x6a>;
	};

	atecc608a@15 {
		compatible = "atmel,atecc608";
		reg = <0x6a>;
	};
};

&sercom5 {
	status = "okay";
	compatible = "atmel,sam0-uart";
	current-speed = <115200>;
	rxpo = <3>;
	txpo = <1>;

	pinctrl-0 = <&sercom5_uart_default>;
	pinctrl-names = "default";
};

&tcc2 {
	status = "okay";
	compatible = "atmel,sam0-tcc-pwm";
	prescaler = <1024>;
	#pwm-cells = <2>;

	pinctrl-0 = <&pwm_default>;
	pinctrl-names = "default";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "uf2";
			reg = <0x00000000 0x2000>;
			read-only;
		};

		code_partition: partition@2000 {
			label = "code";
			reg = <0x2000 0x3A000>;
			read-only;
		};

		/*
		 * The final 16 KiB is reserved for the application.
		 * Storage partition will be used by FCB/LittleFS/NVS
		 * if enabled.
		 */
		storage_partition: partition@3c000 {
			label = "storage";
			reg = <0x0003c000 0x00004000>;
		};
	};
};

zephyr_udc0: &usb0 {
	status = "okay";

	pinctrl-0 = <&usb_dc_default>;
	pinctrl-names = "default";
};
