// 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";

	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>;
};
