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

/dts-v1/;

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

#include "cn9130.dtsi"
#include "cn9132-sr-cex7.dtsi"

/ {
	model = "SolidRun CN9132 Clearfog";
	compatible = "solidrun,cn9132-clearfog",
		     "solidrun,cn9132-sr-cex7", "marvell,cn9130";

	aliases {
		ethernet1 = &cp0_eth2;
		ethernet2 = &cp0_eth0;
		ethernet3 = &cp2_eth0;
		ethernet4 = &cp1_eth0;
		i2c7 = &carrier_mpcie_i2c;
		i2c8 = &carrier_ptp_i2c;
		mmc1 = &cp0_sdhci0;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&cp1_wake0_pins>;

		button-0 {
			label = "SW2";
			gpios = <&cp1_gpio2 8 GPIO_ACTIVE_LOW>;
			linux,can-disable;
			linux,code = <BTN_2>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&cp1_batlow_pins &cp2_rsvd4_pins>;

		/* LED11 */
		led-io-0 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_DISK;
			function-enumerator = <0>;
			default-state = "off";
			gpios = <&cp1_gpio1 11 GPIO_ACTIVE_HIGH>;
		};

		/* LED12 */
		led-io-1 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_DISK;
			function-enumerator = <1>;
			default-state = "off";
			gpios = <&cp2_gpio1 4 GPIO_ACTIVE_HIGH>;
		};
	};

	/* CON4 W_DISABLE1/W_DISABLE2 */
	rfkill-m2-wlan {
		compatible = "rfkill-gpio";
		label = "m.2 wlan (CON4)";
		radio-type = "wlan";
		pinctrl-names = "default";
		pinctrl-0 = <&cp1_10g_phy_rst_01_pins>;
		/* rfkill-gpio inverts internally */
		shutdown-gpios = <&cp1_gpio2 11 GPIO_ACTIVE_HIGH>;
	};

	/* CON5 W_DISABLE1/W_DISABLE2 */
	rfkill-m2-wlan {
		compatible = "rfkill-gpio";
		label = "m.2 wlan (CON5)";
		radio-type = "wlan";
		pinctrl-names = "default";
		pinctrl-0 = <&cp1_10g_phy_rst_23_pins>;
		/* rfkill-gpio inverts internally */
		shutdown-gpios = <&cp1_gpio2 10 GPIO_ACTIVE_HIGH>;
	};

	/* J21 W_DISABLE1 */
	rfkill-m2-wwan {
		compatible = "rfkill-gpio";
		label = "m.2 wwan (J21)";
		radio-type = "wwan";
		pinctrl-names = "default";
		pinctrl-0 = <&cp2_rsvd3_pins>;
		/* rfkill-gpio inverts internally */
		shutdown-gpios = <&cp2_gpio1 3 GPIO_ACTIVE_HIGH>;
	};

	/* J21 W_DISABLE1 */
	rfkill-m2-gnss {
		compatible = "rfkill-gpio";
		label = "m.2 gnss (J21)";
		radio-type = "gps";
		pinctrl-names = "default";
		pinctrl-0 = <&cp2_rsvd8_pins>;
		/* rfkill-gpio inverts internally */
		shutdown-gpios = <&cp2_gpio1 8 GPIO_ACTIVE_HIGH>;
	};

	/* J14 W_DISABLE */
	rfkill-mpcie-wlan {
		compatible = "rfkill-gpio";
		label = "mpcie wlan (J14)";
		radio-type = "wlan";
		pinctrl-names = "default";
		pinctrl-0 = <&cp2_rsvd2_pins>;
		/* rfkill-gpio inverts internally */
		shutdown-gpios = <&cp2_gpio1 2 GPIO_ACTIVE_HIGH>;
	};

	sfp: sfp {
		compatible = "sff,sfp";
		i2c-bus = <&com_10g_sfp_i2c0>;
		pinctrl-names = "default";
		pinctrl-0 = <&com_10g_int0_pins>;
		mod-def0-gpios = <&cp0_gpio1 24 GPIO_ACTIVE_LOW>;
		maximum-power-milliwatt = <2000>;
	};
};

&com_smbus {
	/* This bus is also routed to STM32 BMC Microcontroller (U2) */

	power-sensor@40 {
		compatible = "ti,ina220";
		reg = <0x40>;
		#io-channel-cells = <1>;
		label = "vdd_12v0";
		shunt-resistor = <2000>;
	};

	adc@48 {
		compatible = "ti,tla2021";
		reg = <0x48>;
		#address-cells = <1>;
		#size-cells = <0>;

		/* supplied by chaoskey hardware noise generator circuit */
		channel@0 {
			reg = <0>;
		};
	};
};

&cp0_eth_phy0 {
	/*
	 * Configure LEDs default behaviour:
	 * - LED[0]: link is 1000Mbps: On (yellow): 0111
	 * - LED[1]: link/activity: On/Blink (green): 0001
	 * - LED[2]: Off (green): 1000
	 */
	marvell,reg-init = <3 16 0xf000 0x0817>;

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

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

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

		led@2 {
			/* 1000 */
			reg = <2>;
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_LAN;
			default-state = "keep";
		};
	};
};

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

&cp0_eth2 {
	phy-mode = "2500base-x";
	phys = <&cp0_comphy5 2>;
	status = "okay";

	fixed-link {
		speed = <2500>;
		full-duplex;
		pause;
	};
};

&cp0_i2c1 {
	/*
	 * Both COM and Carrier Board have a PCA9547 i2c mux at 0x77.
	 * Describe them as a single device merging each child bus.
	 */

	i2c-mux@77 {
		i2c@0 {
			/* Routed to Full PCIe (J4) */
		};

		i2c@1 {
			/* Routed to USB Hub (U29) */
		};

		i2c@2 {
			/* Routed to M.2 (CON4) */
		};

		i2c@3 {
			/* Routed to M.2 (CON5) */
		};

		i2c@4 {
			/* Routed to M.2 (J21) */
		};

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

			/* Routed to mini-PCIe (J14) */
		};

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

			/* Routed to various optional PTP related components */
		};
	};
};

&cp0_mdio {
	ethernet-switch@4 {
		compatible = "marvell,mv88e6085";
		reg = <4>;

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

			sw_phy1: ethernet-phy@1 {
				reg = <0x11>;
			};

			sw_phy2: ethernet-phy@2 {
				reg = <0x12>;
			};

			sw_phy3: ethernet-phy@3 {
				reg = <0x13>;
			};

			sw_phy4: ethernet-phy@4 {
				reg = <0x14>;
			};
		};

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

			ethernet-port@1 {
				reg = <1>;
				label = "lan1";
				phy-handle = <&sw_phy1>;
				phy-mode = "internal";

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

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

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

			ethernet-port@2 {
				reg = <2>;
				label = "lan2";
				phy-handle = <&sw_phy2>;
				phy-mode = "internal";

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

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

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

			ethernet-port@3 {
				reg = <3>;
				label = "lan3";
				phy-handle = <&sw_phy3>;
				phy-mode = "internal";

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

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

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

			ethernet-port@4 {
				reg = <4>;
				label = "lan4";
				phy-handle = <&sw_phy4>;
				phy-mode = "internal";

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

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

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

			ethernet-port@5 {
				reg = <5>;
				label = "cpu";
				ethernet = <&cp0_eth2>;
				phy-mode = "2500base-x";

				fixed-link {
					speed = <2500>;
					full-duplex;
					pause;
				};
			};
		};
	};
};

/* SRDS #0,#1,#2,#3 - PCIe */
&cp0_pcie0 {
	num-lanes = <4>;
	phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>, <&cp0_comphy2 0>, <&cp0_comphy3 0>;
	status = "okay";
};

&cp0_pinctrl {
	/*
	 * configure unused gpios exposed via pin headers:
	 * - J7-10: PWRBTN
	 */
	pinctrl-names = "default";
	pinctrl-0 = <&cp0_pwrbtn_pins>;
};

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

&cp0_spi1 {
	/* add CS1 */
	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>;
	};
};

/* J38 */
&cp0_uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&cp0_uart2_pins>;
	status = "okay";
};

&cp0_utmi {
	/* M.2 "CON5" swaps D+/D- */
	swap-dx-lanes = <1>;
};

&cp1_ethernet {
	status = "okay";
};

/* SRDS #2 - 5GE */
&cp1_eth0 {
	phys = <&cp1_comphy2 0>;
	phy-mode = "5gbase-r";
	phy = <&cp1_eth_phy0>;
	managed = "in-band-status";
	status = "okay";
};

/* SRDS #0,#1 - PCIe */
&cp1_pcie0 {
	num-lanes = <2>;
	phys = <&cp1_comphy0 0>, <&cp1_comphy1 0>;
	status = "okay";
};

/* SRDS #4 - PCIe */
&cp1_pcie1 {
	num-lanes = <1>;
	phys = <&cp1_comphy4 1>;
	status = "okay";
};

/* SRDS #5 - PCIe */
&cp1_pcie2 {
	num-lanes = <1>;
	phys = <&cp1_comphy5 2>;
	status = "okay";
};

&cp1_pinctrl {
	/*
	 * configure unused gpios exposed via pin headers:
	 * - J7-8: RSVD16
	 * - J7-10: THRM
	 * - J10-1: WAKE1
	 * - J10-2: SATA_ACT
	 * - J10-8: THERMTRIP
	 */
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_rsvd16_pins &cp1_sata_act_pins &cp1_thrm_irq_pins>,
		    <&cp1_thrm_trip_pins &cp1_wake1_pins>;
};

/* SRDS #3 - SATA */
&cp1_sata0 {
	status = "okay";

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

	sata-port@1 {
		phys = <&cp1_comphy3 1>;
	};
};

&cp1_utmi {
	/* M.2 "CON4" swaps D+/D- */
	swap-dx-lanes = <0>;
};

&cp1_xmdio {
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_xmdio_pins>;
	status = "okay";

	cp1_eth_phy0: ethernet-phy@8 {
		compatible = "ethernet-phy-ieee802.3-c45";
		reg = <8>;
		pinctrl-names = "default";
		pinctrl-0 = <&com_10g_int1_pins>;
		interrupt-parent = <&cp1_gpio2>;
		interrupts = <18 IRQ_TYPE_EDGE_FALLING>;

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

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

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

&cp2_ethernet {
	status =  "okay";
};

/* SRDS #2 - 5GE */
&cp2_eth0 {
	phys = <&cp2_comphy2 0>;
	phy-mode = "5gbase-r";
	phy = <&cp2_eth_phy0>;
	managed = "in-band-status";
	status = "okay";
};

&cp2_gpio1 {
	pinctrl-names= "default";
	pinctrl-0 = <&cp2_rsvd9_pins>;

	/* J21 */
	m2-wwan-reset-hog {
		gpio-hog;
		gpios = <9 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
		output-low;
		line-name = "m2-wwan-reset";
	};
};

/* SRDS #0 - PCIe */
&cp2_pcie0 {
	num-lanes = <1>;
	phys = <&cp2_comphy0 0>;
	status = "okay";
};

/* SRDS #4 - PCIe */
&cp2_pcie1 {
	num-lanes = <1>;
	phys = <&cp2_comphy4 1>;
	status = "okay";
};

/* SRDS #5 - PCIe */
&cp2_pcie2 {
	num-lanes = <1>;
	phys = <&cp2_comphy5 2>;
	status = "okay";
};

&cp2_pinctrl {
	/*
	 * configure unused gpios exposed via pin headers:
	 * - J7-1: RSVD10
	 * - J7-3: RSVD11
	 * - J7-5: RSVD56
	 * - J7-6: RSVD7
	 * - J7-7: RSVD27
	 * - J10-3: RSVD31
	 * - J10-5: RSVD5
	 * - J10-6: RSVD32
	 * - J10-7: RSVD0
	 * - J10-9: RSVD1
	 */
	pinctrl-names = "default";
	pinctrl-0 = <&cp2_rsvd0_pins &cp2_rsvd1_pins &cp2_rsvd5_pins>,
		    <&cp2_rsvd7_pins &cp2_rsvd10_pins &cp2_rsvd11_pins>,
		    <&cp2_rsvd27_pins &cp2_rsvd31_pins &cp2_rsvd32_pins>,
		    <&cp2_rsvd56_pins>;
};

/* SRDS #3 - SATA */
&cp2_sata0 {
	status = "okay";

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

	sata-port@1 {
		phys = <&cp2_comphy3 1>;
	};
};

&cp2_xmdio {
	pinctrl-names = "default";
	pinctrl-0 = <&cp2_xmdio_pins>;
	status = "okay";

	cp2_eth_phy0: ethernet-phy@8 {
		compatible = "ethernet-phy-ieee802.3-c45";
		reg = <8>;
		pinctrl-names = "default";
		pinctrl-0 = <&com_10g_int2_pins>;
		interrupt-parent = <&cp2_gpio2>;
		interrupts = <18 IRQ_TYPE_EDGE_FALLING>;

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

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

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