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

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

	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>;
};

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

	cs-gpios = <&porta 14 GPIO_ACTIVE_LOW>;

	nina_w102@0 {
		compatible = "u-blox,nina";
		reg = <0>;
		label = "NINA_W102";
		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>;

	nina_prog {
		compatible = "espressif,esp";
		label = "NINA_PROG";
		wifi-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>;

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

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

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

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

&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>;
		};
	};
};

&usb0 {
	status = "okay";
};
