/*
 * Copyright (C) 2017 Moxa Inc. - https://www.moxa.com/
 *
 * Author: Harry YJ Jhou (周亞諄) <harryyj.jhou@moxa.com>
 *         Jimmy Chen (陳永達)    <jimmy.chen@moxa.com>
 *         SZ Lin (林上智)        <sz.lin@moxa.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/dts-v1/;

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

/ {
	model = "Moxa UC-8410A";
	compatible = "fsl,ls1021a-moxa-uc-8410a", "fsl,ls1021a";

	aliases {
		enet0_rgmii_phy = &rgmii_phy0;
		enet1_rgmii_phy = &rgmii_phy1;
		enet2_rgmii_phy = &rgmii_phy2;
	};

	sys_mclk: clock-mclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24576000>;
	};

	reg_3p3v: regulator-3p3v {
		  compatible = "regulator-fixed";
		  regulator-name = "3P3V";
		  regulator-min-microvolt = <3300000>;
		  regulator-max-microvolt = <3300000>;
		  regulator-always-on;
	};

	leds {
		compatible = "gpio-leds";

		cel-pwr {
			label = "UC8410A:CEL-PWR";
			gpios = <&gpio3 27 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		cel-reset {
			label = "UC8410A:CEL-RESET";
			gpios = <&gpio3 28 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		str-led {
			label = "UC8410A:RED:PROG";
			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "mmc0";
		};

		sw-ready {
			label = "UC8410A:GREEN:SWRDY";
			gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};

		beeper {
			label = "UC8410A:BEEP";
			gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		prog-led0 {
			label = "UC8410A:GREEN:PROG2";
			gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		prog-led1 {
			label = "UC8410A:GREEN:PROG1";
			gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		prog-led2 {
			label = "UC8410A:GREEN:PROG0";
			gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		wifi-signal0 {
			label = "UC8410A:GREEN:CEL2";
			gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		wifi-signal1 {
			label = "UC8410A:GREEN:CEL1";
			gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		wifi-signal2 {
			label = "UC8410A:GREEN:CEL0";
			gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		cpu-diag-red {
			label = "UC8410A:RED:DIA";
			gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		cpu-diag-green {
			label = "UC8410A:GREEN:DIA";
			gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		cpu-diag-yellow {
			label = "UC8410A:YELLOW:DIA";
			gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		pushbtn-key {
			label = "push button key";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_MISC>;
			default-state = "on";
		};
	};
};

&enet0 {
	phy-handle = <&rgmii_phy0>;
	phy-connection-type = "rgmii-id";
	status = "okay";
};

&enet1 {
	phy-handle = <&rgmii_phy1>;
	phy-connection-type = "rgmii-id";
	status = "okay";
};

&enet2 {
	phy-handle = <&rgmii_phy2>;
	phy-connection-type = "rgmii-id";
	status = "okay";
};

&i2c0 {
	clock-frequency = <100000>;
	status = "okay";

	tpm@20 {
		compatible = "infineon,slb9635tt";
		reg = <0x20>;
	};

	rtc@68 {
		compatible = "dallas,ds1374";
		reg = <0x68>;
	};
};

&lpuart0 {
	status = "okay";
};

&mdio0 {
	rgmii_phy0: ethernet-phy@0 {
		compatible = "marvell,88e1118";
		reg = <0x0>;
		marvell,reg-init =
			<3 0x11 0 0x4415>, /* Reg 3,17 */
			<3 0x10 0 0x77>; /* Reg 3,16 */
	};

	rgmii_phy1: ethernet-phy@1 {
		compatible = "marvell,88e1118";
		reg = <0x1>;
		marvell,reg-init =
			<3 0x11 0 0x4415>, /* Reg 3,17 */
			<3 0x10 0 0x77>; /* Reg 3,16 */
	};

	rgmii_phy2: ethernet-phy@2 {
		compatible = "marvell,88e1118";
		reg = <0x2>;
		marvell,reg-init =
			<3 0x11 0 0x4415>, /* Reg 3,17 */
			<3 0x10 0 0x77>; /* Reg 3,16 */
	};
};

&qspi {
	status = "okay";

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

		partitions@0 {
			label = "U-Boot";
			reg = <0x0 0x180000>;
		};

		partitions@180000 {
			label = "U-Boot Env";
			reg = <0x180000 0x680000>;
		};
	};
};

&sata {
	status = "okay";
};

&uart0 {
	status = "okay";
};

&uart1 {
	status = "okay";
};
