/*
 * 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 = <0x8030200>;
	config_name = "config@cp03-c1";

	aliases {
		console = "/serial@78B1000";
		usb0 = "/xhci@8a00000";
		i2c1 = "/i2c@78ba000";
	};
	ess-switch {
		switch_mac_mode = <PORT_WRAPPER_PSGMII>;
		switch_mac_mode1 = <UNUSED>;
		malibu_gpio = <75>;
		malibu_gpio_cnt = <1>;
		mdc_mdio_gpio = <64 65>;
		malibu2port_phy = <1>;
		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 = <4>;
				phy_type = <MALIBU_PHY_TYPE>;
			};
			port@3 {
				phy_address = <3>;
				phy_type = <MALIBU_PHY_TYPE>;
			};
			port@4 {
				phy_address = <2>;
				phy_type = <MALIBU_PHY_TYPE>;
			};
		};
	};
};

