// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * at91-sama5d27_wlsom1_ek.dts - Device Tree file for SAMA5D27 WLSOM1 EK
 *
 * Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
 *
 * Author: Nicolas Ferre <nicolas.ferre@microcihp.com>
 */
/dts-v1/;
#include "at91-sama5d27_wlsom1.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "Microchip SAMA5D27 WLSOM1 EK";
	compatible = "microchip,sama5d27-wlsom1-ek", "microchip,sama5d27-wlsom1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";

	aliases {
		serial0 = &uart0;	/* DBGU */
		serial1 = &uart6;	/* BT */
		serial2 = &uart5;	/* mikro BUS 2 */
		serial3 = &uart3;	/* mikro BUS 1 */
		i2c1 = &i2c1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	gpio-keys {
		compatible = "gpio-keys";

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

		button-1 {
			label = "USER BUTTON";
			gpios = <&pioA PIN_PB2 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_PROG1>;
			wakeup-source;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_led_gpio_default>;
		status = "okay";

		red {
			label = "red";
			gpios = <&pioA PIN_PA6 GPIO_ACTIVE_HIGH>;
		};

		green {
			label = "green";
			gpios = <&pioA PIN_PA7 GPIO_ACTIVE_HIGH>;
		};

		blue {
			label = "blue";
			gpios = <&pioA PIN_PA8 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};
};

&adc {
	vddana-supply = <&vdd_3v3>;
	vref-supply = <&vdd_3v3>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_adc_default>;
	status = "okay";
};

&flx0 {
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
	status = "okay";

	uart5: serial@200 {
		pinctrl-0 = <&pinctrl_flx0_default>;
		pinctrl-names = "default";
		atmel,use-dma-rx;
		atmel,use-dma-tx;
		status = "okay";
	};
};

&flx1 {
	status = "okay";

	uart6: serial@200 {
		atmel,use-dma-rx;
		atmel,use-dma-tx;
		status = "okay";
	};
};

&macb0 {
	status = "okay";
};

&pioA {
	/*
	 * There is no real pinmux for ADC, if the pin
	 * is not requested by another peripheral then
	 * the muxing is done when channel is enabled.
	 * Requesting pins for ADC is GPIO is
	 * encouraged to prevent conflicts and to
	 * disable bias in order to be in the same
	 * state when the pin is not muxed to the adc.
	 */
	pinctrl_adc_default: adc_default {
		pinmux = <PIN_PD25__GPIO>,
			 <PIN_PD26__GPIO>;
		bias-disable;
	};

	pinctrl_flx0_default: flx0_usart_default {
		pinmux = <PIN_PB28__FLEXCOM0_IO0>,
			 <PIN_PB29__FLEXCOM0_IO1>;
		bias-disable;
	};

	pinctrl_key_gpio_default: key_gpio_default {
		pinmux = <PIN_PB2__GPIO>;
		bias-pull-up;
	};

	pinctrl_led_gpio_default: led_gpio_default {
		pinmux = <PIN_PA6__GPIO>,
			 <PIN_PA7__GPIO>,
			 <PIN_PA8__GPIO>;
		bias-pull-down;
	};

	pinctrl_sdmmc0_default: sdmmc0_default {
		cmd_data {
			pinmux = <PIN_PA1__SDMMC0_CMD>,
				 <PIN_PA2__SDMMC0_DAT0>,
				 <PIN_PA3__SDMMC0_DAT1>,
				 <PIN_PA4__SDMMC0_DAT2>,
				 <PIN_PA5__SDMMC0_DAT3>;
			bias-disable;
		};

		ck_cd_vddsel {
			pinmux = <PIN_PA0__SDMMC0_CK>,
				 <PIN_PA11__SDMMC0_VDDSEL>,
				 <PIN_PA12__SDMMC0_WP>,
				 <PIN_PA13__SDMMC0_CD>;
			bias-disable;
		};
	};

	pinctrl_uart0_default: uart0_default {
		pinmux = <PIN_PB26__URXD0>,
			 <PIN_PB27__UTXD0>;
		bias-disable;
	};

	pinctrl_uart3_default: uart3_default {
		pinmux = <PIN_PB11__URXD3>,
			 <PIN_PB12__UTXD3>;
		bias-disable;
	};

	pinctrl_pwm0_default: pwm0_default {
		pinmux = <PIN_PA31__PWML0>,
			 <PIN_PA30__PWMH0>;
		bias-disable;
	};

	pinctrl_usb_default: usb_default {
		pinmux = <PIN_PA10__GPIO>;
		bias-disable;
	};

	pinctrl_usba_vbus: usba_vbus {
		pinmux = <PIN_PA16__GPIO>;
		bias-disable;
	};
};

&pwm0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm0_default>;
	status = "okay";
};

&qspi1 {
	status = "okay";

	qspi1_flash: flash@0 {
		status = "okay";
	};
};

&sdmmc0 {
	bus-width = <4>;
	mmc-ddr-3_3v;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdmmc0_default>;
	status = "okay";
};

&shutdown_controller {
	debounce-delay-us = <976>;
	atmel,wakeup-rtc-timer;

	input@0 {
		reg = <0>;
	};
};

&tcb0 {
	timer0: timer@0 {
		compatible = "atmel,tcb-timer";
		reg = <0>;
	};

	timer1: timer@1 {
		compatible = "atmel,tcb-timer";
		reg = <1>;
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart0_default>;
	atmel,use-dma-rx;
	atmel,use-dma-tx;
	status = "okay";
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3_default>;
	atmel,use-dma-rx;
	atmel,use-dma-tx;
	status = "okay";
};

&usb0 {
	atmel,vbus-gpio = <&pioA PIN_PA16 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usba_vbus>;
	status = "okay";
};

&usb1 {
	num-ports = <3>;
	atmel,vbus-gpio = <0
			   &pioA PIN_PA10 GPIO_ACTIVE_HIGH
			   0
			  >;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_default>;
	status = "okay";
};

&usb2 {
	phy_type = "hsic";
	status = "okay";
};

&watchdog {
	status = "okay";
};

