/*
 * Copyright (c) 2016-2020, 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 "ipq5018-soc.dtsi"
/ {
	model ="QCA, IPQ5018-MP03.5-C1";
	compatible = "qca,ipq5018", "qca,ipq5018-mp03.5-c1";
	machid = <0x8040004>;
	config_name = "config@mp03.5-c1";

	aliases {
		console = "/serial@78AF000";
		mmc = "/sdhci@7804000";
		i2c0 = "/i2c@78b7000";
		gmac_gpio = "/gmac_gpio";
		usb0 = "/xhci@8a00000";
		pci0 = "/pci@80000000";
		pci1 = "/pci@a0000000";
		nand = "/nand-controller@79B0000";
	};

	console: serial@78AF000 {
		status = "ok";
		serial_gpio {
			blsp0_uart_rx {
				gpio = <20>;
				func = <1>;
				pull = <GPIO_PULL_DOWN>;
				oe = <GPIO_OE_DISABLE>;
				drvstr = <GPIO_8MA>;
				od_en = <GPIO_OD_DISABLE>;
			};
			blsp0_uart_tx {
				gpio = <21>;
				func = <1>;
				pull = <GPIO_NO_PULL>;
				oe = <GPIO_OE_DISABLE>;
				drvstr = <GPIO_8MA>;
				od_en = <GPIO_OD_DISABLE>;
			};
		};
	};

	nand: nand-controller@79B0000 {
		status = "okay";
		nand_gpio {
			qspi_dat3 {
				gpio = <4>;
				func = <2>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
			qspi_dat2 {
				gpio = <5>;
				func = <2>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
			qspi_dat1 {
				gpio = <6>;
				func = <2>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
			qspi_dat0 {
				gpio = <7>;
				func = <2>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
			qspi_cs_n {
				gpio = <8>;
				func = <2>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
			qspi_clk {
				gpio = <9>;
				func = <2>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
		};
	};

	pci0: pci@80000000 {
		status = "ok";
		perst_gpio = <18>;
		mode = "fixed";
		pci_gpio {
			pci_rst {
				gpio = <18>;
				func = <0>;
				pull = <GPIO_NO_PULL>;
				oe = <GPIO_OD_ENABLE>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
		};
	};

	pci1: pci@a0000000 {
		status = "ok";
		perst_gpio = <15>;
		mode = "fixed";
		pci_gpio {
			pci_rst {
				gpio = <15>;
				func = <0>;
				pull = <GPIO_NO_PULL>;
				oe = <GPIO_OD_ENABLE>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
		};
	};

	usb0: xhci@8a00000 {
		usb_pwr_gpio = <24>;
		usb_gpio {
			pwr_gpio {
				gpio = <24>;
				func = <0>;
				pull = <GPIO_PULL_UP>;
				oe = <GPIO_OE_ENABLE>;
				od_en = <GPIO_OD_DISABLE>;
				drvstr = <GPIO_8MA>;
			};
		};
	};

	gmac_cfg {
		ext_mdio_gpio = <36 37>;
		gephy_led = <46>;

		gmac1_cfg {
			unit = <0>;
			base = <0x39C00000>;
			phy_address = <7>;
		};
		gmac2_cfg {
			unit = <1>;
			base = <0x39D00000>;
			phy_address = <0x1c>;
			napa_gpio = <39>;
		};

	};

	led_enable_gpio {
		led_enable_gpio = <31>;
		led_enable {
			gpio = <31>;
			func = <0>;
			oe = <GPIO_OE_ENABLE>;
			pull = <GPIO_NO_PULL>;
			drvstr = <GPIO_8MA>;
		};
	};
};
