/*
 * Copyright (C) 2016 Marvell International Ltd.
 *
 * SPDX-License-Identifier:	GPL-2.0
 * https://spdx.org/licenses
 */

#include "armada-8040.dtsi" /* include SoC device tree */

/ {
	model = "MACCHIATOBin-8040";
	compatible = "marvell,armada8040-mcbin",
		     "marvell,armada8040";

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

	aliases {
		i2c0 = &cpm_i2c0;
		i2c1 = &cpm_i2c1;
		spi0 = &cps_spi1;
		gpio0 = &ap_gpio0;
		gpio1 = &cpm_gpio0;
		gpio2 = &cpm_gpio1;
	};

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

	simple-bus {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		reg_usb3h0_vbus: usb3-vbus0 {
			compatible = "regulator-fixed";
			pinctrl-names = "default";
			pinctrl-0 = <&cpm_xhci_vbus_pins>;
			regulator-name = "reg-usb3h0-vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			startup-delay-us = <500000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&cpm_gpio1 15 GPIO_ACTIVE_HIGH>; /* GPIO[47] */
		};
	};
};

/* Accessible over the mini-USB CON9 connector on the main board */
&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";
};

&cpm_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,34] SMI
	 * [33]    MSS power down
	 * [35-38] CP0 I2C1 and I2C0
	 * [39] MSS CKE Enable
	 * [40,41] CP0 UART1 TX/RX
	 * [42,43] XSMI (controls two 10G phys)
	 * [47] USB VBUS EN
	 * [48] FAN PWM
	 * [49] 10G port 1 interrupt
	 * [50] 10G port 0 interrupt
	 * [51] 2.5G SFP TX fault
	 * [52] PCIe reset out
	 * [53] 2.5G SFP mode
	 * [54] 2.5G SFP LOS
	 * [55] Micro SD card detect
	 * [56-61] Micro SD
	 * [62] CP1 SFI SFP FAULT
	 */
		/*   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    7    0xa  7    2    2    2    2    0xa
		     7    7    8    8    0    0    0    0    0    0
		     0    0    0    0    0    0    0xe  0xe  0xe  0xe
		     0xe  0xe  0 >;

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

	cpm_pcie_reset_pins: cpm-pcie-reset-pins {
		marvell,pins = < 52 >;
		marvell,function = <0>;
	};
};

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

/* PCIe x4 */
&cpm_pcie0 {
	num-lanes = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&cpm_pcie_reset_pins>;
	marvell,reset-gpio = <&cpm_gpio1 20 GPIO_ACTIVE_HIGH>; /* GPIO[52] */
	status = "okay";
};

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

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

&cpm_sata0 {
	status = "okay";
};

&cpm_comphy {
	/*
	 * CP0 Serdes Configuration:
	 * Lane 0: PCIe0 (x4)
	 * Lane 1: PCIe0 (x4)
	 * Lane 2: PCIe0 (x4)
	 * Lane 3: PCIe0 (x4)
	 * Lane 4: SFI (10G)
	 * Lane 5: SATA1
	 */
	phy0 {
		phy-type = <PHY_TYPE_PEX0>;
	};
	phy1 {
		phy-type = <PHY_TYPE_PEX0>;
	};
	phy2 {
		phy-type = <PHY_TYPE_PEX0>;
	};
	phy3 {
		phy-type = <PHY_TYPE_PEX0>;
	};
	phy4 {
		phy-type = <PHY_TYPE_SFI>;
	};
	phy5 {
		phy-type = <PHY_TYPE_SATA1>;
	};
};

&cps_sata0 {
	status = "okay";
};

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

&cps_utmi0 {
	status = "okay";
};

&cps_pinctl {
	/*
	 * MPP Bus:
	 * [0-5] TDM
	 * [6,7] CP1_UART 0
	 * [8]   CP1 10G SFP LOS
	 * [9]   CP1 10G PHY RESET
	 * [10]  CP1 10G SFP TX Disable
	 * [11]  CP1 10G SFP Mode
	 * [12]  SPI1 CS1n
	 * [13]  SPI1 MISO (TDM and SPI ROM shared)
	 * [14]  SPI1 CS0n
	 * [15]  SPI1 MOSI (TDM and SPI ROM shared)
	 * [16]  SPI1 CLK (TDM and SPI ROM shared)
	 * [24]  CP1 2.5G SFP TX Disable
	 * [26]  CP0 10G SFP TX Fault
	 * [27]  CP0 10G SFP Mode
	 * [28]  CP0 10G SFP LOS
	 * [29]  CP0 10G SFP TX Disable
	 * [30]  USB Over current indication
	 * [31]  10G Port 0 phy reset
	 * [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  0x8  0x8  0x0  0x0
		     0x0  0x0  0x3  0x3  0x3  0x3  0x3  0xff 0xff 0xff
		     0xff 0xff 0xff 0xff 0x0  0xff 0x0  0x0  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 0xff>;
};

&cps_spi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&cps_spi1_pins>;
	status = "okay";

	spi-flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		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@400000 {
				label = "Filesystem";
				reg = <0x200000 0xce0000>;
			};
		};
	};
};

&cps_comphy {
	/*
	 * CP1 Serdes Configuration:
	 * Lane 0: SGMII1
	 * Lane 1: SATA 0
	 * Lane 2: USB HOST 0
	 * Lane 3: SATA1
	 * Lane 4: SFI (10G)
	 * Lane 5: SGMII3
	 */
	phy0 {
		phy-type = <PHY_TYPE_SGMII1>;
		phy-speed = <PHY_SPEED_1_25G>;
	};
	phy1 {
		phy-type = <PHY_TYPE_SATA0>;
	};
	phy2 {
		phy-type = <PHY_TYPE_USB3_HOST0>;
	};
	phy3 {
		phy-type = <PHY_TYPE_SATA1>;
	};
	phy4 {
		phy-type = <PHY_TYPE_SFI>;
	};
	phy5 {
		phy-type = <PHY_TYPE_SGMII3>;
	};
};
