// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
 * (c) Copyright 2010 Western Digital Technologies, Inc. All Rights Reserved.
 */

/dts-v1/;

#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"

/ {
	compatible = "wd,mybooklive", "amcc,apollo3g";
	model = "MyBook Live";

	aliases {
		serial0 = &UART0;
	};
};

&POB0 {
	ebc {
		nor_flash@0,0 {
			status = "okay";
			compatible = "microchip,sst39vf040", "jedec-flash";
			bank-width = <1>;
			reg = <0x00000000 0x00000000 0x00080000>;
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				/* Part of bootrom - Don't use it without a jump */
				label = "free";
				reg = <0x00000000 0x0001e000>;
				read-only;
			};

			partition@1e000 {
				label = "env";
				reg = <0x0001e000 0x00002000>;
				read-only;
			};

			partition@20000 {
				label = "uboot";
				reg = <0x00020000 0x00050000>;
				read-only;
			};
		};
	};

	GPIO1: gpio@e0000000 {
		compatible = "wd,mbl-gpio", "ti,74273";
		reg-names = "dat";
		reg = <0xe0000000 0x1>;
		#gpio-cells = <2>;
		gpio-controller;

		enable-button {
			/* Defined in u-boot as: NOT_NOR
			 * "enables features other than NOR
			 * specifically, the buffer at CS2"
			 * (button).
			 *
			 * Note: This option is disabled as
			 * it prevents the system from being
			 * rebooted successfully.
			 */

			gpio-hog;
			line-name = "Enable Reset Button, disable NOR";
			gpios = <1 GPIO_ACTIVE_HIGH>;
			output-low;
		};
	};

	GPIO2: gpio@e0100000 {
		compatible = "wd,mbl-gpio", "ti,74244";
		reg-names = "dat";
		reg = <0xe0100000 0x1>;
		#gpio-cells = <2>;
		gpio-controller;
		no-output;
	};

	leds {
		compatible = "gpio-leds";

		/* There's just one tri-color LED with three separate pins.
		 * One pin for each color (red, green and blue). Each has
		 * a different meaning.
		 */
		led-0 {
			color = <LED_COLOR_ID_RED>;
			function = LED_FUNCTION_FAULT;
			gpios = <&GPIO1 4 GPIO_ACTIVE_HIGH>;
			panic-indicator;
		};

		led-1 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_POWER;
			gpios = <&GPIO1 5 GPIO_ACTIVE_HIGH>;
		};

		led-2 {
			color = <LED_COLOR_ID_BLUE>;
			function = LED_FUNCTION_DISK;
			gpios = <&GPIO1 6 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "disk-activity";
		};
	};

	keys {
		compatible = "gpio-keys-polled";
		poll-interval = <60>;	/* 3 * 20 = 60ms */
		autorepeat;

		button-restart {
			label = "Reset button";
			linux,code = <KEY_RESTART>;
			gpios = <&GPIO2 2 GPIO_ACTIVE_LOW>;
		};
	};

	usbpwr: usb-regulator {
		compatible = "regulator-fixed";
		regulator-name = "Power USB Core";
		gpios = <&GPIO1 2 GPIO_ACTIVE_HIGH>;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on; /* uboot sets this */
		enable-active-high;
	};

	sata1pwr: sata1-regulator {
		compatible = "regulator-fixed";
		regulator-name = "Power Drive Port 1";
		gpios = <&GPIO1 3 GPIO_ACTIVE_HIGH>;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		regulator-boot-on;   /* uboot sets this */
		regulator-always-on; /* needed to read OS from HDD */
		enable-active-high;
	};

	sata0pwr: sata0-regulator {
		compatible = "regulator-fixed";
		regulator-name = "Power Drive Port 0";
		gpios = <&GPIO1 7 GPIO_ACTIVE_HIGH>;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		regulator-boot-on;   /* uboot sets this */
		regulator-always-on; /* needed to read OS from HDD */
		enable-active-high;
	};
};

&EMAC0 {
	status = "okay";

	phy-map = <0x2>;
	phy-address = <0x1>;
	phy-handle = <&phy>;
	phy-mode = "rgmii-id";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		reset-gpios = <&GPIO1 0 GPIO_ACTIVE_LOW>;

		phy: phy@1 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <1>;
		};
	};
};

&CRYPTO {
	status = "okay";
};

&PKA {
	status = "okay";
};

&TRNG {
	status = "okay";
};

&SATA0 {
	status = "okay";

	drive0: sata-port@0 {
		reg = <0>;
		#thermal-sensor-cells = <0>;
	};
};

&SATA1 {
	status = "okay";

	drive1: sata-port@0 {
		reg = <0>;
		#thermal-sensor-cells = <0>;
	};
};

&UART0 {
	status = "okay";
};

&USBOTG0 {
	status = "okay";
	dr_mode = "host";
	vbus-supply = <&usbpwr>;
};