/*
 * Copyright (c) 2021 Weidmueller Interface GmbH & Co. KG
 * SPDX-License-Identifier: Apache-2.0
 */

#include <mem.h>
#include <arm/armv7-a.dtsi>
#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h>
#include <zephyr/dt-bindings/ethernet/xlnx_gem.h>

/ {
	soc {
		interrupt-parent = <&gic>;

		ocm_low: memory@1000 {
			compatible = "zephyr,memory-region", "xlnx,zynq-ocm";
			reg = <0x00001000 DT_SIZE_K(188)>;
			zephyr,memory-region = "OCM_LOW";
		};

		ocm_high: memory@fffc0000 {
			compatible = "zephyr,memory-region", "xlnx,zynq-ocm";
			reg = <0xFFFC0000 DT_SIZE_K(256)>;
			zephyr,memory-region = "OCM_HIGH";
		};

		arch_timer: timer@f8f00200 {
			compatible = "arm,armv8-timer";
			status = "okay";
			interrupt-names = "irq_0", "irq_1", "irq_2", "irq_3";
			interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE
					IRQ_DEFAULT_PRIORITY>,
				     <GIC_PPI 14 IRQ_TYPE_EDGE
					IRQ_DEFAULT_PRIORITY>,
				     <GIC_PPI 11 IRQ_TYPE_EDGE
					IRQ_DEFAULT_PRIORITY>,
				     <GIC_PPI 10 IRQ_TYPE_EDGE
					IRQ_DEFAULT_PRIORITY>;
			reg = <0xf8f00200 0x1C>;
			label = "arch_timer";
		};

		gic: interrupt-controller@f8f01000 {
			compatible = "arm,gic";
			status = "okay";
			reg = <0xf8f01000 0x1000>,
				<0xf8f00100 0x100>;
			interrupt-controller;
			#interrupt-cells = <4>;
			label = "gic";
		};

		gem0: ethernet@e000b000 {
			compatible = "xlnx,gem";
			status = "disabled";
			reg = <0xe000b000 0x1000>,
				<0xf8000140 0x4>;
			interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>,
				     <GIC_SPI 23 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "irq_0", "irq_1";
			label = "gem0";
			mdio-phy-address = <XLNX_GEM_PHY_AUTO_DETECT>;
			phy-poll-interval = <1000>;
			link-speed = <XLNX_GEM_LINK_SPEED_100MBIT>;
			amba-ahb-dbus-width = <XLNX_GEM_AMBA_AHB_DBUS_WIDTH_32BIT>;
			amba-ahb-burst-length = <XLNX_GEM_AMBA_AHB_BURST_SINGLE>;
			hw-rx-buffer-size = <XLNX_GEM_HW_RX_BUFFER_SIZE_8KB>;
			hw-rx-buffer-offset = <0>;
			hw-tx-buffer-size-full;
			rx-buffer-descriptors = <32>;
			tx-buffer-descriptors = <32>;
			rx-buffer-size = <512>;
			tx-buffer-size = <512>;
			discard-rx-fcs;
			unicast-hash;
			full-duplex;
		};

		gem1: ethernet@e000c000 {
			compatible = "xlnx,gem";
			status = "disabled";
			reg = <0xe000c000 0x1000>,
				<0xf8000144 0x4>;
			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>,
				     <GIC_SPI 46 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "irq_0", "irq_1";
			label = "gem1";
			mdio-phy-address = <XLNX_GEM_PHY_AUTO_DETECT>;
			phy-poll-interval = <1000>;
			link-speed = <XLNX_GEM_LINK_SPEED_100MBIT>;
			amba-ahb-dbus-width = <XLNX_GEM_AMBA_AHB_DBUS_WIDTH_32BIT>;
			amba-ahb-burst-length = <XLNX_GEM_AMBA_AHB_BURST_SINGLE>;
			hw-rx-buffer-size = <XLNX_GEM_HW_RX_BUFFER_SIZE_8KB>;
			hw-rx-buffer-offset = <0>;
			hw-tx-buffer-size-full;
			rx-buffer-descriptors = <32>;
			tx-buffer-descriptors = <32>;
			rx-buffer-size = <512>;
			tx-buffer-size = <512>;
			discard-rx-fcs;
			unicast-hash;
			full-duplex;
		};

		uart0: uart@e0000000 {
			compatible = "xlnx,xuartps";
			status = "disabled";
			reg = <0xe0000000 0x4c>;
			interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "irq_0";
			label = "uart0";
		};

		uart1: uart@e0001000 {
			compatible = "xlnx,xuartps";
			status = "disabled";
			reg = <0xe0001000 0x4c>;
			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "irq_0";
			label = "uart1";
		};

		psgpio: gpio@e000a000 {
			compatible = "xlnx,ps-gpio";
			status = "disabled";
			reg = <0xe000a000 0x1000>;
			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL
					IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "irq_0";
			label = "psgpio";

			ranges;
			#address-cells = <1>;
			#size-cells = <0>;

			psgpio_bank0: psgpio_bank@0 {
				compatible = "xlnx,ps-gpio-bank";
				reg = <0x0>;
				label = "psgpio_bank0_mio";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <32>;
				status = "okay";
			};

			psgpio_bank1: psgpio_bank@1 {
				compatible = "xlnx,ps-gpio-bank";
				reg = <0x1>;
				label = "psgpio_bank1_mio";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <22>;
				status = "okay";
			};

			psgpio_bank2: psgpio_bank@2 {
				compatible = "xlnx,ps-gpio-bank";
				reg = <0x2>;
				label = "psgpio_bank2_emio";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <32>;
				status = "okay";
			};

			psgpio_bank3: psgpio_bank@3 {
				compatible = "xlnx,ps-gpio-bank";
				reg = <0x3>;
				label = "psgpio_bank3_emio";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <32>;
				status = "okay";
			};
		};
	};
};
