// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2018 Collabora Ltd.
 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd.
 *
 * Schematics available at https://dl.vamrs.com/products/ficus/docs/hw
 */

/dts-v1/;
#include "rk3399-rock960.dtsi"

/ {
	model = "96boards RK3399 Ficus";
	compatible = "vamrs,ficus", "rockchip,rk3399";

	aliases {
		ethernet0 = &gmac;
	};

	chosen {
		stdout-path = "serial2:1500000n8";
	};

	clkin_gmac: external-gmac-clock {
		compatible = "fixed-clock";
		clock-frequency = <125000000>;
		clock-output-names = "clkin_gmac";
		#clock-cells = <0>;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&user_led1_pin>, <&user_led2_pin>,
			    <&user_led3_pin>, <&user_led4_pin>,
			    <&wlan_led_pin>, <&bt_led_pin>;

		user_led1: led-1 {
			label = "red:user1";
			gpios = <&gpio4 25 0>;
			linux,default-trigger = "heartbeat";
		};

		user_led2: led-2 {
			label = "red:user2";
			gpios = <&gpio4 26 0>;
			linux,default-trigger = "mmc0";
		};

		user_led3: led-3 {
			label = "red:user3";
			gpios = <&gpio4 30 0>;
			linux,default-trigger = "mmc1";
		};

		user_led4: led-4 {
			label = "red:user4";
			gpios = <&gpio1 0 0>;
			panic-indicator;
			linux,default-trigger = "none";
		};

		wlan_active_led: led-5 {
			label = "red:wlan";
			gpios = <&gpio1 1 0>;
			linux,default-trigger = "phy0tx";
			default-state = "off";
		};

		bt_active_led: led-6 {
			label = "red:bt";
			gpios = <&gpio1 4 0>;
			linux,default-trigger = "hci0-power";
			default-state = "off";
		};
	};
};

&gmac {
	assigned-clocks = <&cru SCLK_RMII_SRC>;
	assigned-clock-parents = <&clkin_gmac>;
	clock_in_out = "input";
	phy-supply = <&vcc3v3_sys>;
	phy-mode = "rgmii";
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins>;
	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
	snps,reset-active-low;
	snps,reset-delays-us = <0 10000 50000>;
	tx_delay = <0x28>;
	rx_delay = <0x11>;
	status = "okay";
};

&pcie0 {
	ep-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_HIGH>;
};

&pinctrl {
	gmac {
		rgmii_sleep_pins: rgmii-sleep-pins {
			rockchip,pins =
				<3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>;
		};
	};

	pcie {
		pcie_drv: pcie-drv {
			rockchip,pins =
				<1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
			};
	};

	usb2 {
		host_vbus_drv: host-vbus-drv {
			rockchip,pins =
				<4 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	leds {
		user_led1_pin: user-led1-pin {
			rockchip,pins =
				<4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		user_led2_pin: user-led2-pin {
			rockchip,pins =
				<4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		user_led3_pin: user-led3-pin {
			rockchip,pins =
				<4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		user_led4_pin: user-led4-pin {
			rockchip,pins =
				<1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		wlan_led_pin: wlan-led-pin {
			rockchip,pins =
				<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		bt_led_pin: bt-led-pin {
			rockchip,pins =
				<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&spi1 {
	/* On both Low speed and High speed expansion */
	cs-gpios = <0>, <&gpio4 RK_PA6 0>, <&gpio4 RK_PA7 0>;
	status = "okay";
};

&usbdrd_dwc3_0 {
	dr_mode = "host";
};

&usbdrd_dwc3_1 {
	dr_mode = "host";
};

&vcc3v3_pcie {
	gpio = <&gpio1 24 GPIO_ACTIVE_HIGH>;
};

&vcc5v0_host {
	gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
};
