// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
 * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2 ICP board
 *			SAMA5D2 Industrial Connectivity Platform
 *
 *  Copyright (c) 2018, Microchip Technology Inc.
 *                2018, Eugen Hristev <eugen.hristev@microchip.com>
 */
/dts-v1/;
#include "sama5d2.dtsi"
#include "sama5d2-pinfunc.h"

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

	aliases {
		serial0 = &uart0;
		i2c1	= &i2c1;
	};

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

	ahb {

		sdmmc0: sdio-host@a0000000 {
			bus-width = <4>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_sdmmc0_default>;
			status = "okay";
		};

		apb {

			qspi1: spi@f0024000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_qspi1_sck_cs_default &pinctrl_qspi1_dat_default>;
				status = "okay";

				flash@0 {
					compatible = "jedec,spi-nor";
					reg = <0>;
					spi-max-frequency = <83000000>;
					spi-rx-bus-width = <4>;
					spi-tx-bus-width = <4>;
				};
			};

			macb0: ethernet@f8008000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq &pinctrl_macb0_rst>;
				phy-mode = "internal";
				status = "okay";
			};

			uart0: serial@f801c000 { /* mikrobus1 uart */
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_mikrobus1_uart>;
				status = "okay";
			};

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

				eeprom@50 {
					compatible = "atmel,24c02"; /* EEPROM is 2Kbits microchip 24aa025e48, an at24c02 with page size of 16 */
					reg = <0x50>;
					pagesize = <16>;
				};

				eeprom@52 {
					compatible = "atmel,24c02"; /* EEPROM is 2Kbits microchip 24aa025e48, an at24c02 with page size of 16 */
					reg = <0x52>;
					pagesize = <16>;
				};

				eeprom@53 {
					compatible = "atmel,24c02"; /* EEPROM is 2Kbits microchip 24aa025e48, an at24c02 with page size of 16 */
					reg = <0x53>;
					pagesize = <16>;
				};
			};

			pioA: pinctrl@fc038000 {
				status = "okay";
				pinctrl_i2c1_default: i2c1_default {
					pinmux = <PIN_PD19__TWD1>,
						 <PIN_PD20__TWCK1>;
					bias-disable;
				};

				pinctrl_macb0_rmii: macb0_rmii {
					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-pull-up;
				};

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

				pinctrl_qspi1_sck_cs_default: qspi1_sck_cs_default {
					pinmux = <PIN_PA6__QSPI1_SCK>,
						 <PIN_PA11__QSPI1_CS>;
					bias-disable;
				};

				pinctrl_qspi1_dat_default: qspi1_dat_default {
					pinmux = <PIN_PA7__QSPI1_IO0>,
						 <PIN_PA8__QSPI1_IO1>,
						 <PIN_PA9__QSPI1_IO2>,
						 <PIN_PA10__QSPI1_IO3>;
					bias-pull-up;
				};

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

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

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

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

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