// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
 * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2 ICP board
 *			SAMA5D2 Industrial Connectivity Board
 *
 *  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 {
			uart0: serial@f801c000 { /* mikrobus1 uart */
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_mikrobus1_uart>;
				status = "okay";
			};

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

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

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

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

				eeprom@53 {
					compatible = "atmel,24c32";
					reg = <0x53>;
					pagesize = <16>;
				};
			};
			pioA: gpio@fc038000 {
				status = "okay";
				pinctrl {
					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_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_mikrobus1_uart: mikrobus1_uart {
						pinmux = <PIN_PB26__URXD0>,
							 <PIN_PB27__UTXD0>;
						bias-disable;
					};
				};
			};
		};
	};
};
