// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
 * at91-sama5d3_eds.dts - Device Tree file for the SAMA5D3 Ethernet
 *    Development System board.
 *
 * Copyright (C) 2022 Microchip Technology Inc. and its subsidiaries
 *
 * Author: Jerry Ray <jerry.ray@microchip.com>
 */
/dts-v1/;
#include "sama5d36.dtsi"

/ {
	model = "SAMA5D3 Ethernet Development System";
	compatible = "microchip,sama5d3-eds", "atmel,sama5d36",
		     "atmel,sama5d3", "atmel,sama5";

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

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_key_gpio>;

		button-3 {
			label = "PB_USER";
			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
			linux,code = <0x104>;
			wakeup-source;
		};
	};

	memory@20000000 {
		reg = <0x20000000 0x10000000>;
	};

	vcc_3v3_reg: regulator-1 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	vcc_2v5_reg: regulator-2 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_2V5";
		regulator-min-microvolt = <2500000>;
		regulator-max-microvolt = <2500000>;
		regulator-always-on;
		vin-supply = <&vcc_3v3_reg>;
	};

	vcc_1v8_reg: regulator-3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
		vin-supply = <&vcc_3v3_reg>;
	};

	vcc_1v2_reg: regulator-4 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_1V2";
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
		regulator-always-on;
	};

	vcc_mmc0_reg: regulator-5 {
		compatible = "regulator-fixed";
		regulator-name = "mmc0-card-supply";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_vcc_mmc0_reg_gpio>;
		gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
	};
};

&can0 {
	status = "okay";
};

&dbgu {
	status = "okay";
};

&ebi {
	pinctrl-0 = <&pinctrl_ebi_nand_addr>;
	pinctrl-names = "default";
	status = "okay";

	nand_controller: nand-controller {
		status = "okay";

		nand@3 {
			reg = <0x3 0x0 0x2>;
			atmel,rb = <0>;
			nand-bus-width = <8>;
			nand-ecc-mode = "hw";
			nand-ecc-strength = <4>;
			nand-ecc-step-size = <512>;
			nand-on-flash-bbt;
			label = "atmel_nand";

			partitions {
				compatible = "fixed-partitions";
				#address-cells = <1>;
				#size-cells = <1>;

				at91bootstrap@0 {
					label = "at91bootstrap";
					reg = <0x0 0x40000>;
				};

				bootloader@40000 {
					label = "bootloader";
					reg = <0x40000 0xc0000>;
				};

				bootloaderenvred@100000 {
					label = "bootloader env redundant";
					reg = <0x100000 0x40000>;
				};

				bootloaderenv@140000 {
					label = "bootloader env";
					reg = <0x140000 0x40000>;
				};

				dtb@180000 {
					label = "device tree";
					reg = <0x180000 0x80000>;
				};

				kernel@200000 {
					label = "kernel";
					reg = <0x200000 0x600000>;
				};

				rootfs@800000 {
					label = "rootfs";
					reg = <0x800000 0x0f800000>;
				};
			};
		};
	};
};

&i2c0 {
	pinctrl-0 = <&pinctrl_i2c0_pu>;
	status = "okay";
};

&i2c1 {
	status = "okay";
};

&i2c2 {
	pinctrl-0 = <&pinctrl_i2c2_pu>;
	status = "okay";
};

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

&mmc0 {
	pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3
		     &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
	vmmc-supply = <&vcc_mmc0_reg>;
	vqmmc-supply = <&vcc_3v3_reg>;
	status = "okay";
	slot@0 {
		reg = <0>;
		bus-width = <8>;
		cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
	};
};

&pinctrl {
	board {
		pinctrl_i2c0_pu: i2c0-pu {
			atmel,pins =
				<AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
				<AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
		};

		pinctrl_i2c2_pu: i2c2-pu {
			atmel,pins =
				<AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>,
				<AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
		};

		pinctrl_key_gpio: key-gpio-0 {
			atmel,pins =
				<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
		};

		pinctrl_mmc0_cd: mmc0-cd {
			atmel,pins =
				<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
		};

		/* Reserved for reset signal to the RGMII connector. */
		pinctrl_rgmii_rstn: rgmii-rstn {
			atmel,pins =
				<AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
		};

		/* Reserved for an interrupt line from the RMII and RGMII connectors. */
		pinctrl_spi_irqn: spi-irqn {
			atmel,pins =
				<AT91_PIOB 28 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
		};

		pinctrl_spi0_cs: spi0-cs-default {
			atmel,pins =
				<AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
				 AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};

		pinctrl_spi1_cs: spi1-cs-default {
			atmel,pins = <AT91_PIOC 25 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
				      AT91_PIOC 28 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};

		pinctrl_usba_vbus: usba-vbus {
			atmel,pins =
				<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
		};

		pinctrl_usb_default: usb-default {
			atmel,pins =
				<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
				 AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};

		/* Reserved for VBUS fault interrupt. */
		pinctrl_vbusfault_irqn: vbusfault-irqn {
			atmel,pins =
				<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
		};

		pinctrl_vcc_mmc0_reg_gpio: vcc-mmc0-reg-gpio-default {
			atmel,pins = <AT91_PIOE 2 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
		};
	};
};

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

&spi0 {
	pinctrl-names = "default", "cs";
	pinctrl-1 = <&pinctrl_spi0_cs>;
	cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
	status = "okay";
};

&spi1 {
	pinctrl-names = "default", "cs";
	pinctrl-1 = <&pinctrl_spi1_cs>;
	cs-gpios = <&pioC 25 0>, <0>, <0>, <&pioC 28 0>;
	status = "okay";
};

&tcb0 {
	timer0: timer@0 {
		compatible = "atmel,tcb-timer";
		reg = <0>;
	};

	timer1: timer@1 {
		compatible = "atmel,tcb-timer";
		reg = <1>;
	};
};

&usb0 {	/* USB Device port with VBUS detection. */
	atmel,vbus-gpio = <&pioE 9 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usba_vbus>;
	status = "okay";
};

&usb1 {	/* 3-port Host. First port is unused. */
	atmel,vbus-gpio = <0
			   &pioE 3 GPIO_ACTIVE_HIGH
			   &pioE 4 GPIO_ACTIVE_HIGH
			  >;
	num-ports = <3>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_default>;
	status = "okay";
};

&usb2 {
	status = "okay";
};
