// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Device Tree file for Travese Ten64 (LS1088) board
 * Based on fsl-ls1088a-rdb.dts
 * Copyright 2017-2020 NXP
 * Copyright 2019-2021 Traverse Technologies
 *
 * Author: Mathew McBride <matt@traverse.com.au>
 */

/dts-v1/;

#include "fsl-ls1088a.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	model = "Traverse Ten64";
	compatible = "traverse,ten64", "fsl,ls1088a";

	aliases {
		serial0 = &duart0;
		serial1 = &duart1;
	};

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

	buttons {
		compatible = "gpio-keys";

		/* Fired by system controller when
		 * external power off (e.g ATX Power Button)
		 * asserted
		 */
		button-powerdn {
			label = "External Power Down";
			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
		};

		/* Rear Panel 'ADMIN' button (GPIO_H) */
		button-admin {
			label = "ADMIN button";
			gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_WPS_BUTTON>;
		};
	};

	leds {
		compatible = "gpio-leds";

		led-0 {
			label = "ten64:green:sfp1:down";
			gpios = <&gpio3 11 GPIO_ACTIVE_HIGH>;
		};

		led-1 {
			label = "ten64:green:sfp2:up";
			gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>;
		};

		led-2 {
			label = "ten64:admin";
			gpios = <&sfpgpio 12 GPIO_ACTIVE_HIGH>;
		};
	};

	sfp_xg0: dpmac2-sfp {
		compatible = "sff,sfp";
		i2c-bus = <&sfplower_i2c>;
		tx-fault-gpios = <&sfpgpio 0 GPIO_ACTIVE_HIGH>;
		tx-disable-gpios = <&sfpgpio 1 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&sfpgpio 2 GPIO_ACTIVE_LOW>;
		los-gpios = <&sfpgpio 3 GPIO_ACTIVE_HIGH>;
		maximum-power-milliwatt = <2000>;
	};

	sfp_xg1: dpmac1-sfp {
		compatible = "sff,sfp";
		i2c-bus = <&sfpupper_i2c>;
		tx-fault-gpios = <&sfpgpio 4 GPIO_ACTIVE_HIGH>;
		tx-disable-gpios = <&sfpgpio 5 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&sfpgpio 6 GPIO_ACTIVE_LOW>;
		los-gpios = <&sfpgpio 7 GPIO_ACTIVE_HIGH>;
		maximum-power-milliwatt = <2000>;
	};
};

/* XG1 - Upper SFP */
&dpmac1 {
	sfp = <&sfp_xg1>;
	pcs-handle = <&pcs1>;
	phy-connection-type = "10gbase-r";
	managed = "in-band-status";
};

/* XG0 - Lower SFP */
&dpmac2 {
	sfp = <&sfp_xg0>;
	pcs-handle = <&pcs2>;
	phy-connection-type = "10gbase-r";
	managed = "in-band-status";
};

/* DPMAC3..6 is GE4 to GE8 */
&dpmac3 {
	phy-handle = <&mdio1_phy5>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs3_0>;
};

&dpmac4 {
	phy-handle = <&mdio1_phy6>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs3_1>;
};

&dpmac5 {
	phy-handle = <&mdio1_phy7>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs3_2>;
};

&dpmac6 {
	phy-handle = <&mdio1_phy8>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs3_3>;
};

/* DPMAC7..10 is GE0 to GE3 */
&dpmac7 {
	phy-handle = <&mdio1_phy1>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs7_0>;
};

&dpmac8 {
	phy-handle = <&mdio1_phy2>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs7_1>;
};

&dpmac9 {
	phy-handle = <&mdio1_phy3>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs7_2>;
};

&dpmac10 {
	phy-handle = <&mdio1_phy4>;
	phy-connection-type = "qsgmii";
	managed = "in-band-status";
	pcs-handle = <&pcs7_3>;
};

&duart0 {
	status = "okay";
};

&duart1 {
	status = "okay";
};

&emdio1 {
	status = "okay";

	mdio1_phy5: ethernet-phy@c {
		reg = <0xc>;
	};

	mdio1_phy6: ethernet-phy@d {
		reg = <0xd>;
	};

	mdio1_phy7: ethernet-phy@e {
		reg = <0xe>;
	};

	mdio1_phy8: ethernet-phy@f {
		reg = <0xf>;
	};

	mdio1_phy1: ethernet-phy@1c {
		reg = <0x1c>;
	};

	mdio1_phy2: ethernet-phy@1d {
		reg = <0x1d>;
	};

	mdio1_phy3: ethernet-phy@1e {
		reg = <0x1e>;
	};

	mdio1_phy4: ethernet-phy@1f {
		reg = <0x1f>;
	};
};

&esdhc {
	status = "okay";
};

&i2c0 {
	status = "okay";

	sfpgpio: gpio@76 {
		compatible = "ti,tca9539";
		reg = <0x76>;
		#gpio-cells = <2>;
		gpio-controller;

		admin-led-lower-hog {
			gpio-hog;
			gpios = <13 GPIO_ACTIVE_HIGH>;
			output-low;
		};
	};

	at97sc: tpm@29 {
		compatible = "atmel,at97sc3204t";
		reg = <0x29>;
	};
};

&i2c2 {
	status = "okay";

	rx8035: rtc@32 {
		compatible = "epson,rx8035";
		reg = <0x32>;
	};
};

&i2c3 {
	status = "okay";

	i2c-mux@70 {
		compatible = "nxp,pca9540";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x70>;

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

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

&pcs_mdio1 {
	status = "okay";
};

&pcs_mdio2 {
	status = "okay";
};

&pcs_mdio3 {
	status = "okay";
};

&pcs_mdio7 {
	status = "okay";
};

&qspi {
	status = "okay";

	en25s64: flash@0 {
		compatible = "jedec,spi-nor";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0>;
		spi-max-frequency = <20000000>;
		spi-rx-bus-width = <4>;
		spi-tx-bus-width = <4>;

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

			partition@0 {
				label = "bl2";
				reg = <0 0x100000>;
			};

			partition@100000 {
				label = "bl3";
				reg = <0x100000 0x200000>;
			};

			partition@300000 {
				label = "mcfirmware";
				reg = <0x300000 0x200000>;
			};

			partition@500000 {
				label = "ubootenv";
				reg = <0x500000 0x80000>;
			};

			partition@580000 {
				label = "dpl";
				reg = <0x580000 0x40000>;
			};

			partition@5c0000 {
				label = "dpc";
				reg = <0x5c0000 0x40000>;
			};

			partition@600000 {
				label = "devicetree";
				reg = <0x600000 0x40000>;
			};
		};
	};

	nand: flash@1 {
		compatible = "spi-nand";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <1>;
		spi-max-frequency = <20000000>;
		spi-rx-bus-width = <4>;
		spi-tx-bus-width = <4>;

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

			/* reserved for future boot direct from NAND flash
			 * (this would use the same layout as the 8MiB NOR flash)
			 */
			partition@0 {
				label = "nand-boot-reserved";
				reg = <0 0x800000>;
			};

			/* recovery / install environment */
			partition@800000 {
				label = "recovery";
				reg = <0x800000 0x2000000>;
			};

			/* ubia (first OpenWrt) - a/b names to prevent confusion with ubi0/1/etc. */
			partition@2800000 {
				label = "ubia";
				reg = <0x2800000 0x6C00000>;
			};

			/* ubib (second OpenWrt) */
			partition@9400000 {
				label = "ubib";
				reg = <0x9400000 0x6C00000>;
			};
		};
	};
};

&usb0 {
	status = "okay";
};

&usb1 {
	status = "okay";
};
