/*
 * Copyright (c) 2016, 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 "ipq806x-soc.dtsi"
/ {
	model ="QCA, IPQ806x-AP160";
	compatible = "qca,ipq806x", "qca,ipq806x-ap160";
	machid = <4971>;
	config_name = "config@ap160";

	aliases {
		console = "/serial@16340000";
		nand = "/nand@1A600000";
		gmac_gpio = "/gmac1_gpio";
		pci0 = "/pci@1b500000";
		pci1 = "/pci@1b700000";
		pci2 = "/pci@1b900000";
		pci_pwr = "/pci_pwr";
	};

	gmac_cfg {
		gmac_count = <2>;

		gmac1_cfg {
			base = <0x37200000>;
			unit = <1>;
			is_macsec = <1>;
			mac_pwr0 = <0x00080000>;
			mac_pwr1 = <0x00040000>;
			mac_conn_to_phy = <0>;
			phy_interface_type = <7>;
			phy_address_count = <1>;
			phy_address = <4>;
			phy_name = "IPQ MDIO1";
		};

		gmac2_cfg {
			base = <0x37400000>;
			unit = <2>;
			is_macsec = <1>;
			mac_pwr0 = <0x00080000>;
			mac_pwr1 = <0x00040000>;
			mac_conn_to_phy = <0>;
			phy_interface_type = <2>;
			phy_address_count = <4>;
			phy_address = <0 1 2 3>;
			phy_name = "IPQ MDIO2";
		};
	};
	pci@1b500000 {
		pci_gpio {
			gpio3 {
				gpio = <3>;
				func = <1>;
				pull = <GPIO_PULL_UP>;
				drvstr = <GPIO_12MA>;
				oe = <GPIO_OE_ENABLE>;
			};
		};
	};

	pci@1b700000 {
		pci_gpio {
			gpio48 {
				gpio = <48>;
				func = <1>;
				pull = <GPIO_PULL_UP>;
				drvstr = <GPIO_12MA>;
				oe = <GPIO_OE_ENABLE>;
			};
		};
	};

	pci@1b900000 {
		pci_gpio {
			gpio63 {
				gpio = <63>;
				func = <1>;
				pull = <GPIO_PULL_UP>;
				drvstr = <GPIO_12MA>;
				oe = <GPIO_OE_ENABLE>;
			};
		};
	};

	pci_pwr {
		gpio1 {
			gpio = <9>;
			func = <0>;
			pull = <GPIO_PULL_UP>;
			drvstr = <GPIO_12MA>;
			oe = <GPIO_OE_ENABLE>;
		};

		gpio2 {
			gpio = <26>;
			func = <0>;
			pull = <GPIO_PULL_UP>;
			drvstr = <GPIO_12MA>;
			oe = <GPIO_OE_ENABLE>;
		};
	};
};
