// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Device Tree file for Armada 385 Allied Telesis x530/GS980MX Board.
 (x530/AT-GS980MX)
 *
 Copyright (C) 2020 Allied Telesis Labs
 */

/dts-v1/;
#include "armada-385.dtsi"

#include <dt-bindings/gpio/gpio.h>

/ {
	model = "x530/AT-GS980MX";
	compatible = "alliedtelesis,gs980mx", "alliedtelesis,x530", "marvell,armada385", "marvell,armada380";

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

	memory {
		device_type = "memory";
		reg = <0x00000000 0x40000000>; /* 1GB */
	};

	soc {
		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
			  MBUS_ID(0x01, 0x3d) 0 0xf4800000 0x80000
			  MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000>;

		internal-regs {
			i2c0: i2c@11000 {
				pinctrl-names = "default";
				pinctrl-0 = <&i2c0_pins>;
				status = "okay";
			};

			uart0: serial@12000 {
				pinctrl-names = "default";
				pinctrl-0 = <&uart0_pins>;
				status = "okay";
			};
		};
	};
};

&pciec {
	status = "okay";
};

&pcie1 {
	status = "okay";
	reset-gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
	reset-delay-us = <400000>;
};

&pcie2 {
	status = "okay";
};

&devbus_cs1 {
	compatible = "marvell,mvebu-devbus";
	status = "okay";

	devbus,bus-width    = <8>;
	devbus,turn-off-ps  = <60000>;
	devbus,badr-skew-ps = <0>;
	devbus,acc-first-ps = <124000>;
	devbus,acc-next-ps  = <248000>;
	devbus,rd-setup-ps  = <0>;
	devbus,rd-hold-ps   = <0>;

	/* Write parameters */
	devbus,sync-enable = <0>;
	devbus,wr-high-ps  = <60000>;
	devbus,wr-low-ps   = <60000>;
	devbus,ale-wr-ps   = <60000>;

	nvs@0 {
		status = "okay";

		compatible = "mtd-ram";
		reg = <0 0x00080000>;
		bank-width = <1>;
		label = "nvs";
	};
};

&pinctrl {
	i2c0_gpio_pins: i2c-gpio-pins-0 {
		marvell,pins = "mpp2", "mpp3";
		marvell,function = "gpio";
	};
};

&i2c0 {
	clock-frequency = <100000>;
	status = "okay";

	pinctrl-names = "default", "gpio";
	pinctrl-0 = <&i2c0_pins>;
	pinctrl-1 = <&i2c0_gpio_pins>;
	scl-gpio = <&gpio0 2 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
	sda-gpio = <&gpio0 3 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

	i2c0mux: mux@71 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "nxp,pca9544";
		reg = <0x71>;
		i2c-mux-idle-disconnect;

		i2c@0 { /* POE devices MUX */
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
		};

		i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;

			adt7476_2e: hwmon@2e {
				compatible = "adi,adt7476";
				reg = <0x2e>;
			};

			adt7476_2d: hwmon@2d {
				compatible = "adi,adt7476";
				reg = <0x2d>;
			};
		};

		i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;

			rtc@68 {
				compatible = "dallas,ds1340";
				reg = <0x68>;
			};
		};

		i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;

			gpio@20 {
				compatible = "nxp,pca9554";
				gpio-controller;
				#gpio-cells = <2>;
				reg = <0x20>;
			};
		};
	};
};

&usb0 {
	status = "okay";
};

&spi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi1_pins>;
	status = "okay";

	spi-flash@1 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "jedec,spi-nor";
		reg = <1>; /* Chip select 1 */
		spi-max-frequency = <54000000>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;
			partition@u-boot {
				reg = <0x00000000 0x00100000>;
				label = "u-boot";
			};
			partition@u-boot-env {
				reg = <0x00100000 0x00040000>;
				label = "u-boot-env";
			};
			partition@unused {
				reg = <0x00140000 0x00e80000>;
				label = "unused";
			};
			partition@idprom {
				reg = <0x00fc0000 0x00040000>;
				label = "idprom";
			};
		};
	};
};

&nand_controller {
	status = "okay";

	nand@0 {
		reg = <0>;
		label = "pxa3xx_nand-0";
		nand-rb = <0>;
		nand-on-flash-bbt;
		nand-ecc-strength = <4>;
		nand-ecc-step-size = <512>;

		marvell,nand-enable-arbiter;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;
			partition@user {
				reg = <0x00000000 0x0f000000>;
				label = "user";
			};
			partition@errlog {
				/* Maximum mtdoops size is 8MB, so set to that. */
				reg = <0x0f000000 0x00800000>;
				label = "errlog";
			};
			partition@nand-bbt {
				reg = <0x0f800000 0x00800000>;
				label = "nand-bbt";
			};
		};
	};
};

