// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright 2018 Alexander Monakov <amonakov@gmail.com>
 */
/dts-v1/;

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

/ {
	model = "Valve Steam Link";
	compatible = "valve,steamlink", "marvell,berlin2cd", "marvell,berlin";

	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x20000000>; /* 512 MB */
	};

	gpio-restart {
		compatible = "gpio-restart";
		gpios = <&porta 6 GPIO_ACTIVE_HIGH>;
		active-delay = <100>;
		inactive-delay = <10>;
		wait-delay = <100>;
		priority = <200>;
	};
};

&cpu {
	cpu-supply = <&vcpu>;
	operating-points = <
		/* kHz    uV */
		1000000 1325000
	>;
};

&i2c0 {
	status = "okay";

	/* There are two regulators on the board. One is accessible via I2C,
	 * with buck1 providing SoC power (set up by bootloader to 1.325V or
	 * less depending on leakage value in OTP), and buck2 likely used for
	 * DRAM (providing 1.35V). The other regulator on the opposite side
	 * of the board is probably supplying SDIO and NAND fixed voltages. */
	regulator@19 {
		compatible = "marvell,88pg868";
		reg = <0x19>;

		vcpu: buck1 {
			regulator-boot-on;
			regulator-always-on;
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1325000>;
		};
	};
};

/* Fixed interface to on-board Marvell 8897 Wi-Fi/Bluetooth/NFC chip. */
&sdhci0 {
	keep-power-in-suspend;
	non-removable;
	status = "okay";
};

&uart0 {
	/* RX/TX are routed to TP50/TP51 on the board. */
	status = "okay";
};

/* The SoC is connected to on-board USB hub that in turn has one downstream
 * port wired to the on-board Steam Controller wireless receiver chip. */
&usb_phy1 { status = "okay"; };

&usb1 {
	dr_mode = "host";
	status = "okay";
};

&eth1 { status = "okay"; };
