// 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>;
		i2c-digital-filter;
		i2c-digital-filter-width-ns = <35>;
		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>;
	i2c-digital-filter;
	i2c-digital-filter-width-ns = <35>;
	status = "okay";
};

&i2c1 {
	dmas = <0>, <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1_default>;
	i2c-digital-filter;
	i2c-digital-filter-width-ns = <35>;
	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>;
	};
};

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