// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (C) 2020 Marvell International Ltd.
 *
 * Device tree for the CN9131-DB board.
 */

#include "cn9130-db.dtsi"

/ {
	compatible = "marvell,cn9131", "marvell,cn9130",
		     "marvell,armada-ap807-quad", "marvell,armada-ap807";

	aliases {
		gpio3 = &cp1_gpio1;
		gpio4 = &cp1_gpio2;
		ethernet3 = &cp1_eth0;
		ethernet4 = &cp1_eth1;
	};

	cp1_reg_usb3_vbus0: regulator-6 {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&cp1_xhci0_vbus_pins>;
		regulator-name = "cp1-xhci0-vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		gpio = <&cp1_gpio1 3 GPIO_ACTIVE_HIGH>;
	};

	cp1_usb3_0_phy0: usb-phy-3 {
		compatible = "usb-nop-xceiv";
		vcc-supply = <&cp1_reg_usb3_vbus0>;
	};

	cp1_sfp_eth1: sfp-eth-2 {
		compatible = "sff,sfp";
		i2c-bus = <&cp1_i2c0>;
		los-gpios = <&cp1_gpio1 11 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&cp1_gpio1 10 GPIO_ACTIVE_LOW>;
		tx-disable-gpios = <&cp1_gpio1 9 GPIO_ACTIVE_HIGH>;
		tx-fault-gpios = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&cp1_sfp_pins>;
		/*
		 * SFP cages are unconnected on early PCBs because of an the I2C
		 * lanes not being connected. Prevent the port for being
		 * unusable by disabling the SFP node.
		 */
		status = "disabled";
	};
};

/*
 * Instantiate the first slave CP115
 */

#define CP11X_NAME		cp1
#define CP11X_BASE		f4000000
#define CP11X_PCIEx_MEM_BASE(iface) (0xe2000000 + (iface * 0x1000000))
#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
#define CP11X_PCIE0_BASE	f4600000
#define CP11X_PCIE1_BASE	f4620000
#define CP11X_PCIE2_BASE	f4640000

#include "armada-cp115.dtsi"

#undef CP11X_NAME
#undef CP11X_BASE
#undef CP11X_PCIEx_MEM_BASE
#undef CP11X_PCIEx_MEM_SIZE
#undef CP11X_PCIE0_BASE
#undef CP11X_PCIE1_BASE
#undef CP11X_PCIE2_BASE

&cp1_crypto {
	status = "disabled";
};

&cp1_ethernet {
	status = "okay";
};

/* CON50 */
&cp1_eth0 {
	status = "okay";
	phy-mode = "10gbase-r";
	/* Generic PHY, providing serdes lanes */
	phys = <&cp1_comphy4 0>;
	managed = "in-band-status";
	sfp = <&cp1_sfp_eth1>;
};

&cp1_gpio1 {
	status = "okay";
};

&cp1_gpio2 {
	status = "okay";
};

&cp1_i2c0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_i2c0_pins>;
	clock-frequency = <100000>;
};

/* CON40 */
&cp1_pcie0 {
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_pcie_reset_pins>;
	num-lanes = <2>;
	num-viewport = <8>;
	marvell,reset-gpio = <&cp1_gpio1 0 GPIO_ACTIVE_HIGH>;
	status = "okay";
	/* Generic PHY, providing serdes lanes */
	phys = <&cp1_comphy0 0
		&cp1_comphy1 0>;
};

&cp1_sata0 {
	status = "okay";

	/* CON32 */
	sata-port@1 {
		/* Generic PHY, providing serdes lanes */
		phys = <&cp1_comphy5 1>;
	};
};

/* U24 */
&cp1_spi1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_spi0_pins>;
	reg = <0x700680 0x50>;

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0x0>;
		/* On-board MUX does not allow higher frequencies */
		spi-max-frequency = <40000000>;

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

			partition@0 {
				label = "U-Boot-1";
				reg = <0x0 0x200000>;
			};

			partition@400000 {
				label = "Filesystem-1";
				reg = <0x200000 0xe00000>;
			};
		};
	};

};

&cp1_syscon0 {
	cp1_pinctrl: pinctrl {
		compatible = "marvell,cp115-standalone-pinctrl";

		cp1_i2c0_pins: cp1-i2c-pins-0 {
			marvell,pins = "mpp37", "mpp38";
			marvell,function = "i2c0";
		};
		cp1_spi0_pins: cp1-spi-pins-0 {
			marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
			marvell,function = "spi1";
		};
		cp1_xhci0_vbus_pins: cp1-xhci0-vbus-pins {
			marvell,pins = "mpp3";
			marvell,function = "gpio";
		};
		cp1_sfp_pins: sfp-pins {
			marvell,pins = "mpp8", "mpp9", "mpp10", "mpp11";
			marvell,function = "gpio";
		};
		cp1_pcie_reset_pins: cp1-pcie-reset-pins {
			marvell,pins = "mpp0";
			marvell,function = "gpio";
		};
	};
};

/* CON58 */
&cp1_utmi {
	status = "okay";
};

&cp1_usb3_1 {
	status = "okay";
	usb-phy = <&cp1_usb3_0_phy0>;
	/* Generic PHY, providing serdes lanes */
	phys = <&cp1_comphy3 1>, <&cp1_utmi1>;
	phy-names = "usb", "utmi";
	dr_mode = "host";
};
