// SPDX-License-Identifier: GPL-2.0+
/*
 * U-Boot additions for Agilex5 SocDK eMMC
 *
 * Copyright (C) 2025 Altera Corporation <www.altera.com>
 */

#include "socfpga_agilex5-u-boot.dtsi"

/{
	aliases {
		spi0 = &qspi;
		freeze_br0 = &freeze_controller;
	};

	soc {
		freeze_controller: freeze_controller@0x20000450 {
			compatible = "altr,freeze-bridge-controller";
			reg = <0x20000450 0x00000010>;
			status = "disabled";
		};
	};

	/*
	 * Both Memory base address and size default info is retrieved from HW setting.
	 * Reconfiguration / Overwrite these info can be done with examples below.
	 *
	 * When LPDDR ECC is enabled, the last 1/8 of the memory region must
	 * be reserved for the Inline ECC buffer.
	 *
	 * Example for memory size with 2GB:
	 * memory {
	 *	reg = <0x0 0x80000000 0x0 0x80000000>;
	 * };
	 *
	 * Example for memory size with 8GB:
	 * memory {
	 *	reg = <0x0 0x80000000 0x0 0x80000000>,
	 *	      <0x8 0x80000000 0x1 0x80000000>;
	 * };
	 *
	 * Example for memory size with 32GB:
	 * memory {
	 *	reg = <0x0 0x80000000 0x0 0x80000000>,
	 *	      <0x8 0x80000000 0x7 0x80000000>;
	 * };
	 *
	 * Example for memory size with 512GB:
	 * memory {
	 *	reg = <0x0 0x80000000 0x0 0x80000000>,
	 *	      <0x8 0x80000000 0x7 0x80000000>,
	 *	      <0x88 0x00000000 0x78 0x00000000>;
	 * };
	 *
	 * Example for memory size with 2GB with LPDDR Inline ECC ON:
	 * memory {
	 *	reg = <0x0 0x80000000 0x0 0x70000000>;
	 * };
	 *
	 * Example for memory size with 8GB with LPDDR Inline ECC ON:
	 * memory {
	 *	reg = <0x0 0x80000000 0x0 0x80000000>,
	 *	      <0x8 0x80000000 0x1 0x40000000>;
	 * };
	 */

	chosen {
		stdout-path = "serial0:115200n8";
		u-boot,spl-boot-order = &mmc,&flash0,&nand,"/memory";
	};
};

&flash0 {
	compatible = "jedec,spi-nor";
	spi-tx-bus-width = <4>;
	spi-rx-bus-width = <4>;
	bootph-all;
	/delete-property/ cdns,read-delay;
};

&flash1 {
	bootph-all;
};

&i3c0 {
	bootph-all;
};

&i3c1 {
	bootph-all;
};

&gpio1 {
	portb: gpio-controller@0 {
		bootph-all;
	};
};

&sd_emmc_power {
	bootph-all;
};

&emmc_io_1v8_reg {
	bootph-all;
};

&mmc {
	bootph-all;
};

&qspi {
	status = "okay";
};

&nand {
	status = "disabled";
	bootph-all;
};

&timer0 {
	bootph-all;
};

&timer1 {
	bootph-all;
};

&timer2 {
	bootph-all;
};

&timer3 {
	bootph-all;
};

&watchdog0 {
	bootph-all;
};

&gmac0 {
	status = "okay";
	phy-mode = "rgmii";
	phy-handle = <&emac0_phy0>;

	max-frame-size = <9000>;

	mdio0 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwxgmac-mdio";
		emac0_phy0: ethernet-phy@0 {
			reg = <0>;
		};
	};
};

&gmac2 {
	status = "okay";
	phy-mode = "rgmii";
	phy-handle = <&emac2_phy0>;

	max-frame-size = <9000>;

	mdio0 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwxgmac-mdio";
		emac2_phy0: ethernet-phy@0 {
			reg = <0>;
		};
	};
};
