// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2024 Josua Mayer <josua@solid-run.com>
 *
 * DTS for SolidRun CN9130 Clearfog Base.
 *
 */

/dts-v1/;

#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>

#include "cn9130.dtsi"
#include "cn9130-sr-som.dtsi"

/*
 * Instantiate the external 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

/ {
	model = "SolidRun CN9131 SolidWAN";
	compatible = "solidrun,cn9131-solidwan",
		     "solidrun,cn9130-sr-som", "marvell,cn9130";

	aliases {
		ethernet0 = &cp1_eth1;
		ethernet1 = &cp1_eth2;
		ethernet2 = &cp0_eth1;
		ethernet3 = &cp0_eth2;
		ethernet4 = &cp0_eth0;
		ethernet5 = &cp1_eth0;
		gpio0 = &ap_gpio;
		gpio1 = &cp0_gpio1;
		gpio2 = &cp0_gpio2;
		gpio3 = &cp1_gpio1;
		gpio4 = &cp1_gpio2;
		gpio5 = &expander0;
		i2c0 = &cp0_i2c0;
		i2c1 = &cp0_i2c1;
		i2c2 = &cp1_i2c1;
		mmc0 = &ap_sdhci0;
		mmc1 = &cp0_sdhci0;
		rtc0 = &cp0_rtc;
		rtc1 = &carrier_rtc;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&cp0_led_pins &cp1_led_pins>;

		/* for sfp-1 (J42) */
		led-sfp1-activity {
			label = "sfp1:green";
			gpios = <&cp0_gpio1 7 GPIO_ACTIVE_HIGH>;
		};

		/* for sfp-1 (J42) */
		led-sfp1-link {
			label = "sfp1:yellow";
			gpios = <&cp0_gpio1 4 GPIO_ACTIVE_HIGH>;
		};

		/* (J28) */
		led-sfp0-activity {
			label = "sfp0:green";
			gpios = <&cp1_gpio2 22 GPIO_ACTIVE_HIGH>;
		};

		/* (J28) */
		led-sfp0-link {
			label = "sfp0:yellow";
			gpios = <&cp1_gpio2 23 GPIO_ACTIVE_HIGH>;
		};
	};

	/* Type-A port on J53 */
	reg_usb_a_vbus0: regulator-usb-a-vbus0 {
		compatible = "regulator-fixed";
		pinctrl-0 = <&cp0_reg_usb_a_vbus0_pins>;
		pinctrl-names = "default";
		regulator-name = "vbus0";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpios = <&cp0_gpio1 27 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	reg_usb_a_vbus1: regulator-usb-a-vbus1 {
		compatible = "regulator-fixed";
		pinctrl-0 = <&cp0_reg_usb_a_vbus1_pins>;
		pinctrl-names = "default";
		regulator-name = "vbus1";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpios = <&cp0_gpio1 28 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	sfp0: sfp-0 {
		compatible = "sff,sfp";
		pinctrl-0 = <&cp0_sfp0_pins>;
		pinctrl-names = "default";
		i2c-bus = <&cp0_i2c1>;
		los-gpios = <&cp0_gpio2 2 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&cp0_gpio2 0 GPIO_ACTIVE_LOW>;
		tx-disable-gpios = <&cp0_gpio2 1 GPIO_ACTIVE_HIGH>;
		tx-fault-gpios = <&cp0_gpio1 31 GPIO_ACTIVE_HIGH>;
		maximum-power-milliwatt = <2000>;
	};

	sfp1: sfp-1 {
		compatible = "sff,sfp";
		pinctrl-0 = <&cp1_sfp1_pins>;
		pinctrl-names = "default";
		i2c-bus = <&cp1_i2c1>;
		los-gpios = <&cp1_gpio2 2 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&cp1_gpio2 18 GPIO_ACTIVE_LOW>;
		tx-disable-gpios = <&cp1_gpio2 1 GPIO_ACTIVE_HIGH>;
		tx-fault-gpios = <&cp1_gpio2 17 GPIO_ACTIVE_HIGH>;
		maximum-power-milliwatt = <2000>;
	};
};

&cp0_ethernet {
	status = "okay";
};

/* SRDS #2 - SFP+ 10GE */
&cp0_eth0 {
	managed = "in-band-status";
	phy-mode = "10gbase-r";
	phys = <&cp0_comphy2 0>;
	sfp = <&sfp0>;
	status = "okay";
};

/* SRDS #3 - SGMII 1GE */
&cp0_eth1 {
	managed = "in-band-status";
	phy-mode = "sgmii";
	/* Without mdio phy access rely on sgmii auto-negotiation. */
	phys = <&cp0_comphy3 1>;
	status = "okay";
};

/* SRDS #1 - SGMII */
&cp0_eth2 {
	/delete-property/ pinctrl-0;
	/delete-property/ pinctrl-names;
	managed = "in-band-status";
	phy-mode = "sgmii";
	phy = <&cp0_phy1>;
	phys = <&cp0_comphy1 2>;
};

&cp0_gpio1 {
	pcie0-0-w-disable-hog {
		gpio-hog;
		gpios = <6 GPIO_ACTIVE_LOW>;
		output-low;
		line-name = "pcie0.0-w-disable";
	};

	/* J34 */
	m2-full-card-power-off-hog {
		gpio-hog;
		gpios = <8 GPIO_ACTIVE_LOW>;
		output-low;
		line-name = "m2-full-card-power-off";
	};
};

&cp0_i2c0 {
	/* assembly option */
	fan-controller@18 {
		compatible = "ti,amc6821";
		reg = <0x18>;
	};

	expander0: gpio@41 {
		compatible = "nxp,pca9536";
		reg = <0x41>;

		usb-a-vbus0-ilimit-hog {
			gpio-hog;
			gpios = <0 GPIO_ACTIVE_LOW>;
			input;
			line-name = "vbus0-ilimit";
		};

		/* duplicate connection, controlled by soc gpio */
		usb-vbus0-enable-hog {
			gpio-hog;
			gpios = <1 GPIO_ACTIVE_HIGH>;
			input;
			line-name = "vbus0-enable";
		};

		usb-a-vbus1-ilimit-hog {
			gpio-hog;
			gpios = <2 GPIO_ACTIVE_LOW>;
			input;
			line-name = "vbus1-ilimit";
		};

		/* duplicate connection, controlled by soc gpio */
		usb-vbus1-enable-hog {
			gpio-hog;
			gpios = <3 GPIO_ACTIVE_HIGH>;
			input;
			line-name = "vbus1-enable";
		};
	};

	carrier_eeprom: eeprom@52 {
		compatible = "atmel,24c02";
		reg = <0x52>;
		pagesize = <8>;
	};

	/* usb-hub@60 */

	/* assembly option */
	carrier_rtc: rtc@68 {
		compatible = "st,m41t83";
		reg = <0x68>;
		pinctrl-0 = <&cp1_rtc_pins>;
		pinctrl-names = "default";
		interrupt-parent = <&cp1_gpio1>;
		interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
		reset-gpios = <&cp1_gpio1 13 GPIO_ACTIVE_LOW>;
	};
};

&cp0_i2c1 {
	/*
	 * Routed to SFP.
	 * Limit to 100kHz for compatibility with SFP modules,
	 * featuring AT24C01A/02/04 at addresses 0x50/0x51.
	 */
	clock-frequency = <100000>;
	pinctrl-0 = <&cp0_i2c1_pins>;
	pinctrl-names = "default";
	status = "okay";
};

&cp0_mdio {
	/*
	 * SoM + Carrier each have a PHY at address 0.
	 * Remove the SoM phy node, and skip adding the carrier node.
	 * SGMII Auto-Negotation is enabled by bootloader for
	 * autonomous operation without mdio control.
	 */
	/delete-node/ ethernet-phy@0;

	/* U17016 */
	cp0_phy1: ethernet-phy@1 {
		reg = <1>;
		/*
		 * Configure LEDs default behaviour:
		 * - LED[0]: link is 1000Mbps: On (yellow)
		 * - LED[1]: link/activity: On/blink (green)
		 * - LED[2]: high impedance (floating)
		 */
		marvell,reg-init = <3 16 0xf000 0x0a17>;

		leds {
			#address-cells = <1>;
			#size-cells = <0>;

			led@0 {
				reg = <0>;
				color = <LED_COLOR_ID_YELLOW>;
				function = LED_FUNCTION_LAN;
				default-state = "keep";
			};

			led@1 {
				reg = <1>;
				color = <LED_COLOR_ID_GREEN>;
				function = LED_FUNCTION_LAN;
				default-state = "keep";
			};
		};
	};
};

/* SRDS #0 - miniPCIe */
&cp0_pcie0 {
	num-lanes = <1>;
	phys = <&cp0_comphy0 0>;
	status = "okay";
};

/* SRDS #5 - M.2 B-Key (J34) */
&cp0_pcie2 {
	num-lanes = <1>;
	phys = <&cp0_comphy5 2>;
	status = "okay";
};

&cp0_pinctrl {
	pinctrl-0 = <&cp0_m2_0_shutdown_pins &cp0_mpcie_rfkill_pins>;
	pinctrl-names = "default";

	cp0_i2c1_pins: cp0-i2c1-pins {
		marvell,pins = "mpp35", "mpp36";
		marvell,function = "i2c1";
	};

	cp0_led_pins: cp0-led-pins {
		marvell,pins = "mpp4", "mpp7";
		marvell,function = "gpio";
	};

	cp0_m2_0_shutdown_pins: cp0-m2-0-shutdown-pins {
		marvell,pins = "mpp8";
		marvell,function = "gpio";
	};

	cp0_mmc0_pins: cp0-mmc0-pins {
		marvell,pins = "mpp43", "mpp56", "mpp57", "mpp58",
			       "mpp59", "mpp60", "mpp61";
		marvell,function = "sdio";
	};

	cp0_mpcie_rfkill_pins: cp0-mpcie-rfkill-pins {
		marvell,pins = "mpp6";
		marvell,function = "gpio";
	};

	cp0_reg_usb_a_vbus0_pins: cp0-reg-usb-a-vbus0-pins {
		marvell,pins = "mpp27";
		marvell,function = "gpio";
	};

	cp0_reg_usb_a_vbus1_pins: cp0-reg-usb-a-vbus1-pins {
		marvell,pins = "mpp28";
		marvell,function = "gpio";
	};

	cp0_sfp0_pins: cp0-sfp0-pins {
		marvell,pins = "mpp31", "mpp32", "mpp33", "mpp34";
		marvell,function = "gpio";
	};

	cp0_spi1_cs1_pins: cp0-spi1-cs1-pins {
		marvell,pins = "mpp12";
		marvell,function = "spi1";
	};
};

/* microSD */
&cp0_sdhci0 {
	pinctrl-0 = <&cp0_mmc0_pins>;
	pinctrl-names = "default";
	bus-width = <4>;
	no-1-8-v;
	status = "okay";
};

&cp0_spi1 {
	/* add pin for chip-select 1 */
	pinctrl-0 = <&cp0_spi1_pins &cp0_spi1_cs1_pins>;

	flash@1 {
		compatible = "jedec,spi-nor";
		reg = <1>;
		/* read command supports max. 50MHz */
		spi-max-frequency = <50000000>;
	};
};

/* USB-2.0 Host to USB-Hub */
&cp0_usb3_0 {
	phys = <&cp0_utmi0>;
	phy-names = "utmi";
	dr_mode = "host";
	status = "okay";
};

/* SRDS #4 - USB-3.0 Host to USB-Hub */
&cp0_usb3_1 {
	phys = <&cp0_comphy4 1>, <&cp0_utmi1>;
	phy-names = "comphy", "utmi";
	dr_mode = "host";
	status = "okay";
};

&cp0_utmi {
	status = "okay";
};

&cp0_utmi1 {
	status = "disabled";
};

&cp1_ethernet {
	status = "okay";
};

/* SRDS #4 - SFP+ 10GE */
&cp1_eth0 {
	managed = "in-band-status";
	phy-mode = "10gbase-r";
	phys = <&cp1_comphy4 0>;
	sfp = <&sfp1>;
	status = "okay";
};

/* SRDS #3 - SGMII 1GE */
&cp1_eth1 {
	managed = "in-band-status";
	phy-mode = "sgmii";
	phy = <&cp1_phy0>;
	phys = <&cp0_comphy3 1>;
	status = "okay";
};

/* SRDS #5 - SGMII 1GE */
&cp1_eth2 {
	managed = "in-band-status";
	phy-mode = "sgmii";
	phy = <&cp1_phy1>;
	phys = <&cp0_comphy5 2>;
	status = "okay";
};

&cp1_gpio1 {
	status = "okay";

	/* J30 */
	m2-full-card-power-off-hog-0 {
		gpio-hog;
		gpios = <29 GPIO_ACTIVE_LOW>;
		output-low;
		line-name = "m2-full-card-power-off";
	};

	/* J44 */
	m2-full-card-power-off-hog-1 {
		gpio-hog;
		gpios = <30 GPIO_ACTIVE_LOW>;
		output-low;
		line-name = "m2-full-card-power-off";
	};
};

&cp1_gpio2 {
	status = "okay";
};

&cp1_i2c1 {
	/*
	 * Routed to SFP.
	 * Limit to 100kHz for compatibility with SFP modules,
	 * featuring AT24C01A/02/04 at addresses 0x50/0x51.
	 */
	clock-frequency = <100000>;
	pinctrl-0 = <&cp1_i2c1_pins>;
	pinctrl-names = "default";
	status = "okay";
};

&cp1_mdio {
	pinctrl-0 = <&cp1_mdio_pins>;
	pinctrl-names = "default";
	status = "okay";

	cp1_phy0: ethernet-phy@0 {
		reg = <0>;
		/*
		 * Configure LEDs default behaviour:
		 * - LED[0]: link is 1000Mbps: On (yellow)
		 * - LED[1]: link/activity: On/blink (green)
		 * - LED[2]: high impedance (floating)
		 */
		marvell,reg-init = <3 16 0xf000 0x0a17>;

		leds {
			#address-cells = <1>;
			#size-cells = <0>;

			led@0 {
				reg = <0>;
				color = <LED_COLOR_ID_YELLOW>;
				function = LED_FUNCTION_LAN;
				default-state = "keep";
			};

			led@1 {
				reg = <1>;
				color = <LED_COLOR_ID_GREEN>;
				function = LED_FUNCTION_LAN;
				default-state = "keep";
			};
		};
	};

	cp1_phy1: ethernet-phy@1 {
		reg = <1>;
		/*
		 * Configure LEDs default behaviour:
		 * - LED[0]: link is 1000Mbps: On (yellow)
		 * - LED[1]: link/activity: On/blink (green)
		 * - LED[2]: high impedance (floating)
		 */
		marvell,reg-init = <3 16 0xf000 0x0a17>;

		leds {
			#address-cells = <1>;
			#size-cells = <0>;

			led@0 {
				reg = <0>;
				color = <LED_COLOR_ID_YELLOW>;
				function = LED_FUNCTION_LAN;
				default-state = "keep";
			};

			led@1 {
				reg = <1>;
				color = <LED_COLOR_ID_GREEN>;
				function = LED_FUNCTION_LAN;
				default-state = "keep";
			};
		};
	};
};

/* SRDS #0 - M.2 (J30) */
&cp1_pcie0 {
	num-lanes = <1>;
	phys = <&cp1_comphy0 0>;
	status = "okay";
};

&cp1_rtc {
	status = "disabled";
};

/* SRDS #1 - SATA on M.2 (J44) */
&cp1_sata0 {
	phys = <&cp1_comphy1 0>;
	status = "okay";

	/* only port 0 is available */
	/delete-node/ sata-port@1;
};

&cp1_syscon0 {
	cp1_pinctrl: pinctrl {
		compatible = "marvell,cp115-standalone-pinctrl";
		pinctrl-0 = <&cp1_m2_1_shutdown_pins &cp1_m2_2_shutdown_pins>;
		pinctrl-names = "default";

		cp1_i2c1_pins: cp0-i2c1-pins {
			marvell,pins = "mpp35", "mpp36";
			marvell,function = "i2c1";
		};

		cp1_led_pins: cp1-led-pins {
			marvell,pins = "mpp54", "mpp55";
			marvell,function = "gpio";
		};

		cp1_m2_1_shutdown_pins: cp1-m2-1-shutdown-pins {
			marvell,pins = "mpp29";
			marvell,function = "gpio";
		};

		cp1_m2_2_shutdown_pins: cp1-m2-2-shutdown-pins {
			marvell,pins = "mpp30";
			marvell,function = "gpio";
		};

		cp1_mdio_pins: cp1-mdio-pins {
			marvell,pins = "mpp37", "mpp38";
			marvell,function = "ge";
		};

		cp1_rtc_pins: cp1-rtc-pins {
			marvell,pins = "mpp12", "mpp13";
			marvell,function = "gpio";
		};

		cp1_sfp1_pins: cp1-sfp1-pins {
			marvell,pins = "mpp33", "mpp34", "mpp49", "mpp50";
			marvell,function = "gpio";
		};
	};
};

/*
 * SRDS #2 - USB-3.0 Host to M.2 (J44)
 * USB-2.0 Host to M.2 (J30)
 */
&cp1_usb3_0 {
	phys = <&cp1_comphy2 0>, <&cp1_utmi0>;
	phy-names = "comphy", "utmi";
	dr_mode = "host";
	status = "okay";
};

/* USB-2.0 Host to M.2 (J44) */
&cp1_usb3_1 {
	phys = <&cp1_utmi1>;
	phy-names = "utmi";
	dr_mode = "host";
	status = "okay";
};

&cp1_utmi {
	status = "okay";
};
