/*
 * Copyright (c) 2023 Joel Guittet
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <atmel/samd5xx19.dtsi>
#include "wio_terminal-pinctrl.dtsi"
#include "grove_connectors.dtsi"
#include "raspberrypi_40pins_connector.dtsi"
#include <zephyr/dt-bindings/display/ili9xxx.h>

/ {
	model = "Wio Terminal";
	compatible = "seeed,wio-terminal";

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

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		sw0 = &user_button_0;
		sw1 = &user_button_1;
		sw2 = &user_button_2;
		i2c0 = &sercom4;
		i2c1 = &sercom3;
		spi0 = &sercom5;
		uart0 = &sercom2;
		accel0 = &lis3dh;
		sdhc0 = &sdhc0;
	};

	/* LEDs */
	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			label = "LED";
			gpios = <&porta 15 GPIO_ACTIVE_HIGH>;
		};
	};

	/* Buttons */
	gpio_keys {
		compatible = "gpio-keys";
		user_button_0: button_0 {
			label = "User Button 0";
			gpios = <&portc 26 GPIO_ACTIVE_LOW>;
		};
		user_button_1: button_1 {
			label = "User Button 1";
			gpios = <&portc 27 GPIO_ACTIVE_LOW>;
		};
		user_button_2: button_2 {
			label = "User Button 2";
			gpios = <&portc 28 GPIO_ACTIVE_LOW>;
		};
		joy_sel: joystick_selection {
			label = "joystick selection";
			gpios = <&portd 10 GPIO_ACTIVE_LOW>;
		};
		joy_down: joystick_down {
			label = "joystick down";
			gpios = <&portd 8 GPIO_ACTIVE_LOW>;
		};
		joy_up: joystick_up {
			label = "joystick up";
			gpios = <&portd 20 GPIO_ACTIVE_LOW>;
		};
		joy_left: joystick_left {
			label = "joystick left";
			gpios = <&portd 12 GPIO_ACTIVE_LOW>;
		};
		joy_right: joystick_right {
			label = "joystick right";
			gpios = <&portd 9 GPIO_ACTIVE_LOW>;
		};
	};

	/* Regulators */
	lcd_backlight_en {
		compatible = "regulator-fixed";
		regulator-name = "lcd_backlight_enable";
		enable-gpios = <&portc 5 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};
	rpi_power_3v3_en {
		compatible = "regulator-fixed";
		regulator-name = "rpi_power_3v3_enable";
		enable-gpios = <&portc 15 GPIO_ACTIVE_LOW>;
		regulator-boot-on;
	};
	rpi_power_5v_en {
		compatible = "regulator-fixed";
		regulator-name = "rpi_power_5v_enable";
		enable-gpios = <&portc 14 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};
	usb_power_5v_en {
		compatible = "regulator-fixed";
		regulator-name = "usb_power_5v_en";
		enable-gpios = <&porta 27 GPIO_ACTIVE_LOW>;
	};
};

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

&dmac {
	status = "okay";
};

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

		boot_partition: partition@0 {
			label = "uf2";
			reg = <0x00000000 DT_SIZE_K(16)>;
			read-only;
		};

		code_partition: partition@4000 {
			label = "code";
			reg = <0x4000 DT_SIZE_K(512-16)>;
			read-only;
		};
	};
};

/* RTL8720D (Wifi/BLE) */
&sercom0 {
	status = "okay";
	compatible = "atmel,sam0-spi";
	#address-cells = <1>;
	#size-cells = <0>;
	dipo = <2>;
	dopo = <0>;
	pinctrl-0 = <&sercom0_spi_default>;
	pinctrl-names = "default";
	cs-gpios = <&portc 25 GPIO_ACTIVE_LOW>;
};

/* RTL8720D (Wifi/BLE) */
&sercom1 {
	status = "okay";
	compatible = "atmel,sam0-uart";
	current-speed = <115200>;
	rxpo = <1>;
	txpo = <0>;
	pinctrl-0 = <&sercom1_uart_default>;
	pinctrl-names = "default";
};

/* UART, Raspberry Pi connector */
&sercom2 {
	status = "okay";
	compatible = "atmel,sam0-uart";
	current-speed = <115200>;
	rxpo = <1>;
	txpo = <0>;
	pinctrl-0 = <&sercom2_uart_default>;
	pinctrl-names = "default";
};

/* I2C1, Raspberry Pi and Groove connectors */
&sercom3 {
	status = "okay";
	compatible = "atmel,sam0-i2c";
	clock-frequency = <I2C_BITRATE_FAST>;
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-0 = <&sercom3_i2c_default>;
	pinctrl-names = "default";
};

/* I2C0, LIS3DH, ATECC608, Raspberry Pi connector */
&sercom4 {
	status = "okay";
	compatible = "atmel,sam0-i2c";
	clock-frequency = <I2C_BITRATE_HIGH>;
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-0 = <&sercom4_i2c_default>;
	pinctrl-names = "default";

	/* LIS3DH */
	lis3dh: lis3dh@18 {
		compatible = "st,lis3dh", "st,lis2dh";
		status = "okay";
		reg = <0x18>;
		irq-gpios = <&portc 21 GPIO_ACTIVE_HIGH>;
	};

	/* ATECC608A */
	atecc608a@6a {
		compatible = "atmel,atecc608";
		reg = <0x6a>;
	};
};

/* SPI, Raspberry Pi connector */
&sercom5 {
	status = "okay";
	compatible = "atmel,sam0-spi";
	#address-cells = <1>;
	#size-cells = <0>;
	dipo = <2>;
	dopo = <0>;
	pinctrl-0 = <&sercom5_spi_default>;
	pinctrl-names = "default";
	cs-gpios = <&portb 1 GPIO_ACTIVE_LOW>;
};

/* microSD Card */
&sercom6 {
	status = "okay";
	compatible = "atmel,sam0-spi";
	#address-cells = <1>;
	#size-cells = <0>;
	dipo = <2>;
	dopo = <0>;
	pinctrl-0 = <&sercom6_spi_default>;
	pinctrl-names = "default";
	cs-gpios = <&portc 19 GPIO_ACTIVE_LOW>;

	/* microSD Card */
	sdhc0: sdhc@0 {
		compatible = "zephyr,sdhc-spi-slot";
		reg = <0>;
		spi-max-frequency = <24000000>;
		mmc {
			compatible = "zephyr,sdmmc-disk";
		};
	};
};

/* LCD */
&sercom7 {
	status = "okay";
	compatible = "atmel,sam0-spi";
	#address-cells = <1>;
	#size-cells = <0>;
	dipo = <2>;
	dopo = <3>;
	pinctrl-0 = <&sercom7_spi_default>;
	pinctrl-names = "default";
	cs-gpios = <&portb 21 GPIO_ACTIVE_LOW>;

	/* LCD */
	ili9341: ili9341@0 {
		compatible = "ilitek,ili9341";
		spi-max-frequency = <24000000>;
		reg = <0>;
		cmd-data-gpios = <&portc 6 GPIO_ACTIVE_LOW>;
		reset-gpios = <&portc 7 GPIO_ACTIVE_LOW>;
		pixel-format = <ILI9XXX_PIXEL_FORMAT_RGB565>;
		rotation = <270>;
		width = <320>;
		height = <240>;
	};
};

/* USB */
zephyr_udc0: &usb0 {
	status = "okay";
	pinctrl-0 = <&usb_dc_default>;
	pinctrl-names = "default";

	wio_terminal_console: wio_terminal_console {
		compatible = "zephyr,cdc-acm-uart";
	};
};
