/*
 * Copyright (c) 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 "ipq6018-soc.dtsi"
/ {
	machid = <0x1030100>;
	config_name = "config@db-cp02";

	aliases {
		console = "/serial@78B1000";
		mmc = "/sdhci@7804000";
		pci0 = "/pci@20000000";
		usb0 = "/xhci@8a00000";
		usb1 = "/xhci@7000000";
		i2c1 = "/i2c@78ba000";
	};
	ess-switch {
		switch_mac_mode = <PORT_WRAPPER_SGMII_PLUS>;
		switch_mac_mode1 = <PORT_WRAPPER_SGMII_PLUS>;
		napa_gpio = <77>;
		napa_gpio_cnt = <1>;
		mdc_mdio_gpio = <64 65>;
		port_phyinfo {
			port@0 {
				phy_address = <0>;
				phy_type = <MALIBU_PHY_TYPE>;
			};
			port@1 {
				phy_address = <1>;
				phy_type = <MALIBU_PHY_TYPE>;
			};
			port@2 {
				phy_address = <2>;
				phy_type = <MALIBU_PHY_TYPE>;
			};
			port@3 {
				phy_address = <16>;
				phy_type = <QCA8081_PHY_TYPE>;
			};
			port@4 {
				phy_address = <20>;
				phy_type = <QCA8081_PHY_TYPE>;
			};
		};
	};

};
