/*
 * DTS File for HiSilicon Poplar Development Board
 *
 * Copyright (c) 2016-2017 HiSilicon Technologies Co., Ltd.
 *
 * Released under the GPLv2 only.
 * SPDX-License-Identifier: GPL-2.0
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include "hi3798cv200.dtsi"
#include "poplar-pinctrl.dtsi"

/ {
	model = "HiSilicon Poplar Development Board";
	compatible = "hisilicon,hi3798cv200-poplar", "hisilicon,hi3798cv200";

	aliases {
		serial0 = &uart0;
		serial2 = &uart2;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x80000000>;
	};

	leds {
		compatible = "gpio-leds";

		user-led0 {
			label = "USER-LED0";
			gpios = <&gpio6 3 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
			default-state = "off";
		};

		user-led1 {
			label = "USER-LED1";
			gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "mmc0";
			default-state = "off";
		};

		user-led2 {
			label = "USER-LED2";
			gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "none";
			default-state = "off";
		};

		user-led3 {
			label = "USER-LED3";
			gpios = <&gpio10 6 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "cpu0";
			default-state = "off";
		};
	};

	reg_pcie: regulator-pcie {
		compatible = "regulator-fixed";
		regulator-name = "3V3_PCIE0";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio6 7 0>;
		enable-active-high;
	};
};

&ehci {
	status = "okay";
};

&emmc {
	pinctrl-names = "default";
	pinctrl-0 = <&emmc_pins_1 &emmc_pins_2
		     &emmc_pins_3 &emmc_pins_4>;
	fifo-depth = <256>;
	clock-frequency = <200000000>;
	cap-mmc-highspeed;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;
	non-removable;
	bus-width = <8>;
	status = "okay";
};

&gmac1 {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;
	phy-handle = <&eth_phy1>;
	phy-mode = "rgmii";
	hisilicon,phy-reset-delays-us = <10000 10000 30000>;

	eth_phy1: phy@3 {
		reg = <3>;
	};
};

&gpio1 {
	status = "okay";
	gpio-line-names = "GPIO-E",	"",
			  "",		"",
			  "",		"GPIO-F",
			  "",		"GPIO-J";
};

&gpio2 {
	status = "okay";
	gpio-line-names = "GPIO-H",	"GPIO-I",
			  "GPIO-L",	"GPIO-G",
			  "GPIO-K",	"",
			  "",		"";
};

&gpio3 {
	status = "okay";
	gpio-line-names = "",		"",
			  "",		"",
			  "GPIO-C",	"",
			  "",		"GPIO-B";
};

&gpio4 {
	status = "okay";
	gpio-line-names = "",		"",
			  "",		"",
			  "",		"GPIO-D",
			  "",		"";
};

&gpio5 {
	status = "okay";
	gpio-line-names = "",		"USER-LED-1",
			  "USER-LED-2",	"",
			  "",		"GPIO-A",
			  "",		"";
};

&gpio6 {
	status = "okay";
	gpio-line-names = "",		"",
			  "",		"USER-LED-0",
			  "",		"",
			  "",		"";
};

&gpio10 {
	status = "okay";
	gpio-line-names = "",		"",
			  "",		"",
			  "",		"",
			  "USER-LED-3",	"";
};

&i2c0 {
	status = "okay";
	label = "LS-I2C0";
};

&i2c2 {
	status = "okay";
	label = "LS-I2C1";
};

&ir {
	status = "okay";
};

&ohci {
	status = "okay";
};

&pcie {
	reset-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>;
	vpcie-supply = <&reg_pcie>;
	status = "okay";
};

&sd0 {
	bus-width = <4>;
	cap-sd-highspeed;
	status = "okay";
};

&spi0 {
	status = "okay";
	label = "LS-SPI0";
};

&uart0 {
	status = "okay";
};

&uart2 {
	status = "okay";
	label = "LS-UART0";
};
/* No optional LS-UART1 on Low Speed Expansion Connector. */
