/*
 * Copyright (c) 2016 - 2019, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/dts-v1/;
#include "ipq807x-soc.dtsi"
#include <dt-bindings/qcom/gpio-ipq807x.h>
/ {
	machid = <0x0801000E>;
	config_name = "config@hk10";

	aliases {
		console = "/serial@78B3000";
		uart2 = "/serial@78B0000";
		pci0 = "/pci@20000000";
		pci1 = "/pci@10000000";
		i2c0 = "/i2c@78b6000";
	};
	ess-switch {
		switch_mac_mode = <0x0>;
		switch_mac_mode1 = <0x2>;
		switch_mac_mode2 = <0x7>;
		aquantia_port = <4>;
		aquantia_gpio = <44>;
		sfp_port = <5>;
		sfp_gpio = <59>;
		port_phyinfo {
			port@0 {
				phy_address = <0>;
				phy_type = <1>;
			};
			port@1 {
				phy_address = <1>;
				phy_type = <1>;
			};
			port@2 {
				phy_address = <2>;
				phy_type = <1>;
			};
			port@3 {
				phy_address = <3>;
				phy_type = <1>;
			};
			port@4 {
				phy_address = <7>;
				phy_type = <3>;
			};
			port@5 {
				phy_address = <30>;
				phy_type = <5>;
			};
		};
	};
};

