// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2-ICP board
 *
 *  Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
 *
 *	Author: Radu Pirea & Razvan Stefanescu,
 *		Codrin Ciubotariu <codrin.ciubotariu@microchip.com>,
 *		Cristian Birsan <cristian.birsan@microchip.com>
 */
/dts-v1/;
#include "sama5d2.dtsi"
#include "sama5d2-pinfunc.h"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/mfd/atmel-flexcom.h>

/ {
	model = "Microchip SAMA5D2-ICP";
	compatible = "microchip,sama5d2-icp", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";

	aliases {
		serial0 = &uart0;	/* debug uart0 + mikro BUS 1 */
		serial1 = &uart1;	/* mikro BUS 3 */
		serial3 = &uart3;	/* mikro BUS 2 */
		serial5 = &uart7;	/* flx2 */
		i2c0	= &i2c0;
		i2c1	= &i2c1;
	};

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

	clocks {
		slow_xtal {
			clock-frequency = <32768>;
		};

		main_xtal {
			clock-frequency = <12000000>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

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

		sw4 {
			label = "USER_PB1";
			gpios = <&pioA PIN_PD0 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_PROG1>;
			wakeup-source;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_led_gpio_default>;
		status = "okay"; /* conflict with pwm0 */

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

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

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

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

&can0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_can0_default>;
	status = "okay";
};

&can1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_can1_default>;
	status = "okay";
};

&flx0 { /* mikrobus2 spi */
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
	status = "okay";

	spi2: spi@400 {
		dmas = <0>, <0>;
		cs-gpios = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_mikrobus2_spi &pinctrl_ksz_spi_cs>;
		status = "okay";
		#address-cells = <1>;
		#size-cells = <0>;

		switch0: ksz8563@0 {
			compatible = "microchip,ksz8563";
			reg = <0>;
			reset-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_LOW>;

			spi-max-frequency = <500000>;
			spi-cpha;
			spi-cpol;

			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
					label = "lan1";
				};

				port@1 {
					reg = <1>;
					label = "lan2";
				};

				port@2 {
					reg = <2>;
					label = "cpu";
					ethernet = <&macb0>;
					phy-mode = "mii";
					fixed-link {
						speed = <100>;
						full-duplex;
					};
				};
			};
		};
	};
};

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

	uart7: serial@200 {
		pinctrl-0 = <&pinctrl_flx2_default>;
		pinctrl-names = "default";
		atmel,use-dma-rx;
		atmel,use-dma-tx;
		status = "okay"; /* Conflict w/ qspi1. */
	};
};

&flx3 { /* mikrobus1 spi */
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
	status = "okay";

	spi5: spi@400 {
		dmas = <0>, <0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
		status = "okay";
	};
};

&flx4 {
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
	status = "okay";

	i2c6: i2c@600 {
		dmas = <0>, <0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_flx4_default>;
		status = "okay";

		mcp16502@5b {
			compatible = "microchip,mcp16502";
			reg = <0x5b>;
			status = "okay";
			lpm-gpios = <&pioBU 7 GPIO_ACTIVE_LOW>;

			regulators {
				vdd_io_reg: VDD_IO {
					regulator-name = "VDD_IO";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <3700000>;
					regulator-initial-mode = <2>;
					regulator-allowed-modes = <2>, <4>;
					regulator-always-on;

					regulator-state-standby {
						regulator-on-in-suspend;
						regulator-mode = <4>;
					};

					regulator-state-mem {
						regulator-off-in-suspend;
						regulator-mode = <4>;
					};
				};

				VDD_DDR {
					regulator-name = "VDD_DDR";
					regulator-min-microvolt = <600000>;
					regulator-max-microvolt = <1850000>;
					regulator-initial-mode = <2>;
					regulator-allowed-modes = <2>, <4>;
					regulator-always-on;

					regulator-state-standby {
						regulator-on-in-suspend;
						regulator-mode = <4>;
					};

					regulator-state-mem {
						regulator-on-in-suspend;
						regulator-mode = <4>;
					};
				};

				VDD_CORE {
					regulator-name = "VDD_CORE";
					regulator-min-microvolt = <600000>;
					regulator-max-microvolt = <1850000>;
					regulator-initial-mode = <2>;
					regulator-allowed-modes = <2>, <4>;
					regulator-always-on;

					regulator-state-standby {
						regulator-on-in-suspend;
						regulator-mode = <4>;
					};

					regulator-state-mem {
						regulator-off-in-suspend;
						regulator-mode = <4>;
					};
				};

				VDD_OTHER {
					regulator-name = "VDD_OTHER";
					regulator-min-microvolt = <600000>;
					regulator-max-microvolt = <1850000>;
					regulator-initial-mode = <2>;
					regulator-allowed-modes = <2>, <4>;
					regulator-always-on;

					regulator-state-standby {
						regulator-on-in-suspend;
						regulator-mode = <4>;
					};

					regulator-state-mem {
						regulator-off-in-suspend;
						regulator-mode = <4>;
					};
				};

				LDO1 {
					regulator-name = "LDO1";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <3700000>;
					regulator-always-on;

					regulator-state-standby {
						regulator-on-in-suspend;
					};

					regulator-state-mem {
						regulator-off-in-suspend;
					};
				};

				LDO2 {
					regulator-name = "LDO2";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <3700000>;
					regulator-always-on;

					regulator-state-standby {
						regulator-on-in-suspend;
					};

					regulator-state-mem {
						regulator-off-in-suspend;
					};
				};

			};
		};
	};
};

&i2c0 { /* mikrobus i2c */
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_mikrobus_i2c>;
	status = "okay";
};

&i2c1 {
	dmas = <0>, <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1_default>;
	status = "okay";

	eeprom@50 {
		compatible = "atmel,24c32";
		reg = <0x50>;
		pagesize = <16>;
		status = "okay";
	};

	eeprom@52 {
		compatible = "atmel,24c32";
		reg = <0x52>;
		pagesize = <16>;
		status = "disabled";
	};

	eeprom@53 {
		compatible = "atmel,24c32";
		reg = <0x53>;
		pagesize = <16>;
		status = "disabled";
	};
};

&macb0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq &pinctrl_macb0_rst>;
	phy-mode = "mii";
	status = "okay";

	fixed-link {
		speed = <100>;
		full-duplex;
	};
};

&pioA {
	pinctrl_adc_default: adc_default {
		pinmux = <PIN_PD24__GPIO>,
				<PIN_PD25__GPIO>,
				<PIN_PD26__GPIO>;
		bias-disable;
	};

	/*
	 * The ADTRG pin can work on any edge type.
	 * In here it's being pulled up, so need to
	 * connect it to ground to get an edge e.g.
	 * Trigger can be configured on falling, rise
	 * or any edge, and the pull-up can be changed
	 * to pull-down or left floating according to
	 * needs.
	 */
	pinctrl_adtrg_default: adtrg_default {
		pinmux = <PIN_PD31__ADTRG>;
		bias-pull-up;
	};

	pinctrl_flx4_default: flx4_default {
		pinmux = <PIN_PC28__FLEXCOM4_IO0>,
			 <PIN_PC29__FLEXCOM4_IO1>;
		bias-disable;
	};

	pinctrl_can0_default: can0_default {
		pinmux = <PIN_PC10__CANTX0>,
			 <PIN_PC11__CANRX0>;
		bias-disable;
	};

	pinctrl_can1_default: can1_default {
		pinmux = <PIN_PC26__CANTX1>,
			 <PIN_PC27__CANRX1>;
		bias-disable;
	};

	pinctrl_i2c1_default: i2c1_default {
		pinmux = <PIN_PD19__TWD1>,
			 <PIN_PD20__TWCK1>;
		bias-disable;
	};

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

	pinctrl_led_gpio_default: led_gpio_default {
		pinmux = <PIN_PB0__GPIO>,
			 <PIN_PB1__GPIO>,
			 <PIN_PA31__GPIO>;
		bias-pull-up;
	};

	pinctrl_qspi1_default: qspi1_default {
		pinmux = <PIN_PA6__QSPI1_SCK>,
			 <PIN_PA7__QSPI1_IO0>,
			 <PIN_PA8__QSPI1_IO1>,
			 <PIN_PA9__QSPI1_IO2>,
			 <PIN_PA10__QSPI1_IO3>,
			 <PIN_PA11__QSPI1_CS>;
		bias-disable;
	};

	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 {
			pinmux = <PIN_PA0__SDMMC0_CK>,
				 <PIN_PA13__SDMMC0_CD>;
			bias-disable;
		};
	};

	pinctrl_sdmmc1_default: sdmmc1_default {
		cmd_data {
			pinmux = <PIN_PA18__SDMMC1_DAT0>,
				 <PIN_PA19__SDMMC1_DAT1>,
				 <PIN_PA20__SDMMC1_DAT2>,
				 <PIN_PA21__SDMMC1_DAT3>;
			bias-disable;
		};

		ck_cd {
			pinmux = <PIN_PA22__SDMMC1_CK>,
				 <PIN_PA28__SDMMC1_CMD>;
			bias-disable;
		};
	};

	pinctrl_mikrobus_i2c: mikrobus_i2c {
		pinmux = <PIN_PD22__TWCK0>,
			 <PIN_PD21__TWD0>;
		bias-disable;
	};

	pinctrl_mikrobus1_an: mikrobus1_an {
		pinmux = <PIN_PD26__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus1_rst: mikrobus1_rst {
		pinmux = <PIN_PC5__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
		pinmux = <PIN_PC21__FLEXCOM3_IO3>;
		bias-disable;
	};

	pinctrl_mikrobus1_spi: mikrobus1_spi {
		pinmux = <PIN_PC20__FLEXCOM3_IO0>,
			 <PIN_PC19__FLEXCOM3_IO1>,
			 <PIN_PC18__FLEXCOM3_IO2>;
		bias-disable;
	};

	pinctrl_mikrobus1_pwm: mikrobus1_pwm {
		pinmux = <PIN_PC4__TIOB1>;
		bias-disable;
	};

	pinctrl_mikrobus1_int: mikrobus1_int {
		pinmux = <PIN_PC3__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus1_uart: mikrobus1_uart {
		pinmux = <PIN_PB26__URXD0>,
			 <PIN_PB27__UTXD0>;
		bias-disable;
	};

	pinctrl_mikrobus2_an: mikrobus2_an {
		pinmux = <PIN_PD25__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus2_rst: mikrobus2_rst {
		pinmux = <PIN_PB24__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus2_spi_cs: mikrobus2_spi_cs {
		pinmux = <PIN_PB31__FLEXCOM0_IO3>;
		bias-disable;
	};

	pinctrl_mikrobus2_spi: mikrobus2_spi {
		pinmux = <PIN_PB28__FLEXCOM0_IO0>,
			 <PIN_PB29__FLEXCOM0_IO1>,
			 <PIN_PB30__FLEXCOM0_IO2>;
		bias-disable;
	};

	pinctrl_ksz_spi_cs: ksz_spi_cs {
		pinmux = <PIN_PC0__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus2_pwm: mikrobus2_pwm {
		pinmux = <PIN_PB23__TIOB2>;
		bias-disable;
	};

	pinctrl_mikrobus2_int: mikrobus2_int {
		pinmux = <PIN_PB22__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus2_uart: mikrobus2_uart {
		pinmux = <PIN_PC12__URXD3>,
			 <PIN_PC13__UTXD3>;
		bias-disable;
	};

	pinctrl_mikrobus3_an: mikrobus3_an {
		pinmux = <PIN_PD24__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus3_rst: mikrobus3_rst {
		pinmux = <PIN_PB21__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus3_spi_cs: mikrobus3_spi_cs {
		pinmux = <PIN_PA17__SPI0_NPCS0>;
		bias-disable;
	};

	pinctrl_mikrobus3_spi: mikrobus3_spi {
		pinmux = <PIN_PA14__SPI0_SPCK>,
			 <PIN_PA16__SPI0_MISO>,
			 <PIN_PA15__SPI0_MOSI>;
		bias-disable;
	};

	pinctrl_mikrobus3_pwm: mikrobus3_pwm {
		pinmux = <PIN_PB20__TIOB3>;
		bias-disable;
	};

	pinctrl_mikrobus3_int: mikrobus3_int {
		pinmux = <PIN_PB18__GPIO>;
		bias-disable;
	};

	pinctrl_mikrobus3_uart: mikrobus3_uart {
		pinmux = <PIN_PC7__URXD1>,
			 <PIN_PC8__UTXD1>;
		bias-disable;
	};

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

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

	pinctrl_pwm0_pwm2_default: pwm0_pwm2_default {
		pinmux = <PIN_PB5__PWMH2>,
			 <PIN_PB6__PWML2>;
		bias-pull-up;
	};

	pinctrl_macb0_default: macb0_default {
		pinmux = <PIN_PD1__GRXCK>,
			 <PIN_PD2__GTXER>,
			 <PIN_PD5__GRX2>,
			 <PIN_PD6__GRX3>,
			 <PIN_PD7__GTX2>,
			 <PIN_PD8__GTX3>,
			 <PIN_PD9__GTXCK>,
			 <PIN_PD10__GTXEN>,
			 <PIN_PD11__GRXDV>,
			 <PIN_PD12__GRXER>,
			 <PIN_PD13__GRX0>,
			 <PIN_PD14__GRX1>,
			 <PIN_PD15__GTX0>,
			 <PIN_PD16__GTX1>,
			 <PIN_PD17__GMDC>,
			 <PIN_PD18__GMDIO>;
		bias-disable;
	};

	pinctrl_macb0_phy_irq: macb0_phy_irq {
		pinmux = <PIN_PD3__GPIO>;
		bias-disable;
	};

	pinctrl_macb0_rst: macb0_sw_rst {
		pinmux = <PIN_PD4__GPIO>;
		bias-disable;
	};

	pinctrl_flx2_default: flx2_default {
		pinmux = <PIN_PA6__FLEXCOM2_IO0>,
			 <PIN_PA7__FLEXCOM2_IO1>,
			 <PIN_PA9__FLEXCOM2_IO3>,
			 <PIN_PA10__FLEXCOM2_IO4>;
		bias-disable;
	};
};

&pwm0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm0_pwm2_default>;
	status = "disabled"; /* conflict with leds, HSIC */
};

&qspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_qspi1_default>;
	status = "disabled"; /* Conflict with wilc_pwrseq, flx2 */

	flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <80000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
		m25p,fast-read;

		at91bootstrap@0 {
			label = "qspi: at91bootstrap";
			reg = <0x00000000 0x00040000>;
		};

		bootloader@40000 {
			label = "qspi: bootloader";
			reg = <0x00040000 0x000c0000>;
		};

		bootloaderenvred@100000 {
			label = "qspi: bootloader env redundant";
			reg = <0x00100000 0x00040000>;
		};

		bootloaderenv@140000 {
			label = "qspi: bootloader env";
			reg = <0x00140000 0x00040000>;
		};

		dtb@180000 {
			label = "qspi: device tree";
			reg = <0x00180000 0x00080000>;
		};

		kernel@200000 {
			label = "qspi: kernel";
			reg = <0x00200000 0x00600000>;
		};
	};
};

&sdmmc0 {
	no-1-8-v;
	bus-width = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdmmc0_default>;
	status = "okay";
};

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

	input@0 {
		reg = <0>;
		atmel,wakeup-type = "low";
	};
};

&spi0 {  /* mikrobus3 spi */
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_mikrobus3_spi &pinctrl_mikrobus3_spi_cs>;
	status = "okay";
};

&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_mikrobus1_uart>;
	atmel,use-dma-rx;
	atmel,use-dma-tx;
	status = "okay";
};

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

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

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

&usb1 {
	num-ports = <3>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_default>;
	status = "okay";
};

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

&watchdog {
	status = "okay";
};
