// 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/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 = <0x104>;
			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 {
	atmel,shdwc-debouncer = <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";
};
