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

/dts-v1/;
#include <atmel/samd21.dtsi>
#include <atmel/samx2xx18.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";
};
