// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2018 SolidRun ltd
 */

#include "armada-8040.dtsi"

/ {
	model = "ClearFog-GT-8K";
	compatible = "solidrun,clearfog-gt-8k",
		     "marvell,armada8040";

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

	aliases {
		i2c0 = &cp0_i2c0;
		i2c1 = &cp0_i2c1;
		spi0 = &cp1_spi1;
	};

	memory@00000000 {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x80000000>;
	};

	simple-bus {
		compatible = "simple-bus";

		reg_usb3h0_vbus: usb3-vbus0 {
			compatible = "regulator-fixed";
			pinctrl-names = "default";
			pinctrl-0 = <&cp0_xhci_vbus_pins>;
			regulator-name = "reg-usb3h0-vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			startup-delay-us = <300000>;
			shutdown-delay-us = <500000>;
			regulator-force-boot-off;
			gpio = <&cp0_gpio1 15 GPIO_ACTIVE_LOW>; /* GPIO[47] */
		};
	};
};

&uart0 {
	status = "okay";
};

&ap_pinctl {
	/*
	 * MPP Bus:
	 * eMMC [0-10]
	 * UART0 [11,19]
	 */
		  /* 0 1 2 3 4 5 6 7 8 9 */
	pin-func = < 1 1 1 1 1 1 1 1 1 1
		     1 3 0 0 0 0 0 0 0 3 >;
};

/* on-board eMMC */
&ap_sdhci0 {
	pinctrl-names = "default";
	pinctrl-0 = <&ap_emmc_pins>;
	bus-width = <8>;
	status = "okay";
};

&cp0_pinctl {
	/*
	 * MPP Bus:
	 * [0-31] = 0xff: Keep default CP0_shared_pins:
	 * [11] CLKOUT_MPP_11 (out)
	 * [23] LINK_RD_IN_CP2CP (in)
	 * [25] CLKOUT_MPP_25 (out)
	 * [29] AVS_FB_IN_CP2CP (in)
	 * [32, 33, 34] pci0/1/2 reset
	 * [35-38] CP0 I2C1 and I2C0
	 * [39] GPIO reset button
	 * [40,41] LED0 and LED1
	 * [43] 1512 phy reset
	 * [47] USB VBUS EN (active low)
	 * [48] FAN PWM
	 * [49] SFP+ present signal
	 * [50] TPM interrupt
	 * [51] WLAN0 disable
	 * [52] WLAN1 disable
	 * [53] LTE disable
	 * [54] NFC reset
	 * [55] Micro SD card detect
	 * [56-61] Micro SD
	 */
		/*   0    1    2    3    4    5    6    7    8    9 */
	pin-func = < 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
		     0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
		     0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
		     0xff 0    0    0    0    2    2    2    2    0
		     0    0    0    0    0    0    0    0    0    0
		     0    0    0    0    0    0    0xe  0xe  0xe  0xe
		     0xe  0xe  0 >;

	cp0_pcie_reset_pins: cp0-pcie-reset-pins {
		marvell,pins = < 32 >;
		marvell,function = <0>;
	};

	cp0_xhci_vbus_pins: cp0-xhci-vbus-pins {
		marvell,pins = < 47 >;
		marvell,function = <0>;
	};

	cp1_1g_phy_reset: cp1-1g-phy-reset {
		marvell,pins = < 43 >;
		marvell,function = <0>;
	};
};

/* uSD slot */
&cp0_sdhci0 {
	pinctrl-names = "default";
	pinctrl-0 = <&cp0_sdhci_pins>;
	bus-width = <4>;
	status = "okay";
};

&cp0_pcie0 {
	num-lanes = <1>;
	pinctrl-names = "default";
	pinctrl-0 = <&cp0_pcie_reset_pins>;
	marvell,reset-gpio = <&cp0_gpio1 0 GPIO_ACTIVE_LOW>;
	status = "okay";
};

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

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

&cp0_sata0 {
	status = "okay";
};

&cp0_comphy {
	/*
	 * CP0 Serdes Configuration:
	 * Lane 0: PCIe0 (x1)
	 * Lane 1: Not connected
	 * Lane 2: SFI0 (10G)
	 * Lane 3: Not connected
	 * Lane 4: USB 3.0 host port1 (can be PCIe)
	 * Lane 5: Not connected
	 */
	phy0 {
		phy-type = <COMPHY_TYPE_PEX0>;
	};
	phy1 {
		phy-type = <COMPHY_TYPE_UNCONNECTED>;
	};
	phy2 {
		phy-type = <COMPHY_TYPE_SFI0>;
	};
	phy3 {
		phy-type = <COMPHY_TYPE_UNCONNECTED>;
	};
	phy4 {
		phy-type = <COMPHY_TYPE_USB3_HOST1>;
	};
	phy5 {
		phy-type = <COMPHY_TYPE_UNCONNECTED>;
	};
};

&cp0_ethernet {
        pinctrl-names = "default";
        status = "okay";
};

/* 10G SFI SFP */
&cp0_eth0 {
        status = "okay";
        phy-mode = "sfi";
};

&cp1_sata0 {
	status = "okay";
};

&cp1_usb3_0 {
	vbus-supply = <&reg_usb3h0_vbus>;
	status = "okay";
};

&cp1_utmi0 {
	status = "okay";
};

&cp1_pinctl {
	/*
	 * MPP Bus:
	 * [0-5] TDM
	 * [6]   VHV Enable
	 * [7]   CP1 SPI0 CSn1 (FXS)
	 * [8]   CP1 SPI0 CSn0 (TPM)
	 * [9.11]CP1 SPI0 MOSI/MISO/CLK
	 * [13]  CP1 SPI1 MISO (TDM and SPI ROM shared)
	 * [14]  CP1 SPI1 CS0n (64Mb SPI ROM)
	 * [15]  CP1 SPI1 MOSI (TDM and SPI ROM shared)
	 * [16]  CP1 SPI1 CLK (TDM and SPI ROM shared)
	 * [24]  Topaz switch reset
	 * [26]  Buzzer
	 * [27]  CP1 SMI MDIO
	 * [28]  CP1 SMI MDC
	 * [29]  CP0 10G SFP TX Disable
	 * [30]  WPS button
	 * [31]  Front panel button
	 * [32-62] = 0xff: Keep default CP1_shared_pins:
	 */
		/*   0    1    2    3    4    5    6    7    8    9 */
	pin-func = < 0x4  0x4  0x4  0x4  0x4  0x4  0x0  0x4  0x4  0x4
		     0x4  0x4  0x0  0x3  0x3  0x3  0x3  0xff 0xff 0xff
		     0xff 0xff 0xff 0xff 0x0  0xff 0x0  0x8  0x8  0x0
		     0x0  0x0  0x0  0xff 0xff 0xff 0xff 0xff 0xff 0xff
		     0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
		     0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
		     0xff 0xff 0xff>;
};

&cp1_spi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_spi1_pins>;
	status = "okay";

	spi-flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <10000000>;

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

			partition@0 {
				label = "U-Boot";
				reg = <0 0x200000>;
			};
			partition@200000 {
				label = "Filesystem";
				reg = <0x200000 0xce0000>;
			};
		};
	};
};

&cp1_comphy {
	/*
	 * CP1 Serdes Configuration:
	 * Lane 0: SATA 1 (RX swapped). Can be PCIe0
	 * Lane 1: Not used
	 * Lane 2: USB HOST 0
	 * Lane 3: SGMII1 - Connected to 1512 port
	 * Lane 4: Not used
	 * Lane 5: SGMII2 - Connected to Topaz switch
	 */
	phy0 {
		phy-type = <COMPHY_TYPE_SATA1>;
		phy-invert = <COMPHY_POLARITY_RXD_INVERT>;
	};
	phy1 {
		phy-type = <COMPHY_TYPE_UNCONNECTED>;
	};
	phy2 {
		phy-type = <COMPHY_TYPE_USB3_HOST0>;
	};
	phy3 {
		phy-type = <COMPHY_TYPE_SGMII1>;
		phy-speed = <COMPHY_SPEED_1_25G>;
	};
	phy4 {
		phy-type = <COMPHY_TYPE_UNCONNECTED>;
	};
	phy5 {
		phy-type = <COMPHY_TYPE_SGMII2>;
		phy-speed = <COMPHY_SPEED_3_125G>;
	};
};

&cp1_mdio {
	status = "okay";
	phy0: ethernet-phy@0 {
		reg = <0>;
	};
};

&cp1_ethernet {
	pinctrl-names = "default";
	pinctrl-0 = <&cp1_1g_phy_reset>;
	status = "okay";
};

/* 1G SGMII */
&cp1_eth1 {
	status = "okay";
	phy-mode = "sgmii";
	phy = <&phy0>;
	phy-reset-gpios = <&cp0_gpio1 11 GPIO_ACTIVE_LOW>;
};

/* 2.5G to Topaz switch */
&cp1_eth2 {
	status = "okay";
	phy-mode = "sgmii";
	phy-speed = <2500>;
	phy-reset-gpios = <&cp1_gpio0 24 GPIO_ACTIVE_LOW>;
};
