/dts-v1/;
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
 *
 * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include "ipq5018.dtsi"

/ {
	#address-cells = <0x2>;
	#size-cells = <0x2>;
	model = "Qualcomm Technologies, Inc. IPQ5018/AP-MP03.3";
	compatible = "qcom,ipq5018-ap-mp03.3", "qcom,ipq5018-mp03.3", "qcom,ipq5018";
	interrupt-parent = <&intc>;

	aliases {
		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
		serial0 = &blsp1_uart1;
		serial1 = &blsp1_uart2;
		ethernet0 = "/soc/dp1";
		ethernet1 = "/soc/dp2";
	};

	chosen {
		bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
	#ifdef __IPQ_MEM_PROFILE_256_MB__
		bootargs-append = " swiotlb=1 clk_ignore_unused";
	#else
		bootargs-append = " swiotlb=1 coherent_pool=2M clk_ignore_unused";
	#endif
		stdout-path = "serial0";
	};

	reserved-memory {
	#ifdef __IPQ_MEM_PROFILE_256_MB__
	/*            256 MB Profile
	 * +=========+==============+========================+
	 * |        |              |                         |
	 * | Region | Start Offset |          Size           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |  NSS   |  0x40000000  |          8MB            |
	 * |        |              |                         |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * | Linux  |  0x40800000  | Depends on total memory |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * +        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * | uboot  |  0x4A600000  |           4MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |  SBL   |  0x4AA00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  smem  |  0x4AB00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |   TZ   |  0x4AC00000  |           4MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |   Q6   |  0x4B000000  |          16MB           |
	 * |  code/ |              |                         |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |IPQ5018 |  0x4C000000  |          13MB           |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * | M3 Dump|  0x4CD00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  QDSS  |  0x4CE00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |QCN6122 |  0x4CF00000  |          15MB           |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * | M3 Dump|  0x4DE00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  QDSS  |  0x4DF00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |QCN9000 |  0x4E000000  |          17MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |  MHI1  |  0x4F100000  |          16MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |                                                 |
	 * |      Rest of the memory for Linux               |
	 * |                                                 |
	 * +=================================================+
	 */

		q6_mem_regions: q6_mem_regions@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 0x3000000>;
		};

		q6_code_data: q6_code_data@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 01000000>;
		};

		q6_ipq5018_data: q6_ipq5018_data@4c000000 {
			no-map;
			reg = <0x0 0x4c000000 0x0 0xD00000>;
		};

		m3_dump: m3_dump@4CD00000 {
			no-map;
			reg = <0x0 0x4CD00000 0x0 0x100000>;
		};

		q6_etr_region:q6_etr_dump@4CE00000 {
			no-map;
			reg = <0x0 0x4CE00000 0x0 0x100000>;
		};

		q6_qcn6122_data1: q6_qcn6122_data1@4CF00000 {
			no-map;
			reg = <0x0 0x4CF00000 0x0 0xF00000>;
		};

		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4DE00000 {
			no-map;
			reg = <0x0 0x4DE00000 0x0 0x100000>;
		};

		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4DF00000 {
			no-map;
			reg = <0x0 0x4DF00000 0x0 0x100000>;
		};

		q6_qcn9000_region: qcn9000_pcie0@4E000000 {
			no-map;
			reg = <0x0 0x4E000000 0x0 0x01100000>;
		};

		mhi_region1: dma_pool1@4F100000 {
			compatible = "shared-dma-pool";
			no-map;
			reg = <0x0 0x4F100000 0x0 0x01000000>;
		};
	#elif __IPQ_MEM_PROFILE_512_MB__
	/*                      512 MB Profile
	 * +=========+==============+========================+
	 * |        |              |                         |
	 * | Region | Start Offset |          Size           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |  NSS   |  0x40000000  |          16MB           |
	 * |        |              |                         |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * | Linux  |  0x41000000  | Depends on total memory |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * | uboot  |  0x4A600000  |           4MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |  SBL   |  0x4AA00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  smem  |  0x4AB00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |   TZ   |  0x4AC00000  |           4MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |   Q6   |  0x4B000000  |          16MB           |
	 * |  code/ |              |                         |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |IPQ5018 |  0x4C000000  |          14MB           |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * | M3 Dump|  0x4CE00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  QDSS  |  0x4CF00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * | caldb  |  0x4D000000  |           2MB           |
	 * +--------+--------------+-------------------------+
	 * |QCN6122 |  0x4D200000  |          16MB           |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * | M3 Dump|  0x4E200000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  QDSS  |  0x4E300000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * | caldb  |  0x4E400000  |           5MB           |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |QCN9000 |  0x4E900000  |          30MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |  MHI1  |  0x50700000  |          16MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |                                                 |
	 * |      Rest of the memory for Linux               |
	 * |                                                 |
	 * +=================================================+
	 */

		q6_mem_regions: q6_mem_regions@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 0x3900000>;
		};

		q6_code_data: q6_code_data@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 01000000>;
		};

		q6_ipq5018_data: q6_ipq5018_data@4C000000 {
			no-map;
			reg = <0x0 0x4C000000 0x0 0xE00000>;
		};

		m3_dump: m3_dump@4CE00000 {
			no-map;
			reg = <0x0 0x4CE00000 0x0 0x100000>;
		};

		q6_etr_region: q6_etr_dump@4CF00000 {
			no-map;
			reg = <0x0 0x4CF00000 0x0 0x100000>;
		};

		q6_caldb_region: q6_caldb_region@4D000000 {
			no-map;
			reg = <0x0 0x4D000000 0x0 0x200000>;
		};

		q6_qcn6122_data1: q6_qcn6122_data1@4D200000 {
			no-map;
			reg = <0x0 0x4D200000 0x0 0x1000000>;
		};

		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 {
			no-map;
			reg = <0x0 0x4E200000 0x0 0x100000>;
		};

		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 {
			no-map;
			reg = <0x0 0x4E300000 0x0 0x100000>;
		};

		q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 {
			no-map;
			reg = <0x0 0x4E400000 0x0 0x500000>;
		};

		q6_qcn9000_region: qcn9000_pcie0@4E900000 {
			no-map;
			reg = <0x0 0x4E900000 0x0 0x01E00000>;
		};

		mhi_region1: dma_pool1@50700000 {
			compatible = "shared-dma-pool";
			no-map;
			reg = <0x0 0x50700000 0x0 0x01000000>;
		};
	#else
	/*                      1G Profile
	 * +=========+==============+========================+
	 * |        |              |                         |
	 * | Region | Start Offset |          Size           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |  NSS   |  0x40000000  |          16MB           |
	 * |        |              |                         |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * | Linux  |  0x41000000  | Depends on total memory |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * | uboot  |  0x4A600000  |           4MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |  SBL   |  0x4AA00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  smem  |  0x4AB00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |   TZ   |  0x4AC00000  |           4MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |        |              |                         |
	 * |   Q6   |  0x4B000000  |          16MB           |
	 * |  code/ |              |                         |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |IPQ5018 |  0x4C000000  |          14MB           |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * | M3 Dump|  0x4CE00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  QDSS  |  0x4CF00000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * | caldb  |  0x4D000000  |           2MB           |
	 * +--------+--------------+-------------------------+
	 * |QCN6122 |  0x4D200000  |          16MB           |
	 * |  data  |              |                         |
	 * +--------+--------------+-------------------------+
	 * | M3 Dump|  0x4E200000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * |  QDSS  |  0x4E300000  |           1MB           |
	 * +--------+--------------+-------------------------+
	 * | caldb  |  0x4E400000  |           5MB           |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |QCN9000 |  0x4E900000  |          45MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |        |              |                         |
	 * |  MHI1  |  0x51600000  |          24MB           |
	 * |        |              |                         |
	 * +--------+--------------+-------------------------+
	 * |                                                 |
	 * |      Rest of the memory for Linux               |
	 * |                                                 |
	 * +=================================================+
	 */

		q6_mem_regions: q6_mem_regions@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 0x3900000>;
		};

		q6_code_data: q6_code_data@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 01000000>;
		};

		q6_ipq5018_data: q6_ipq5018_data@4C000000 {
			no-map;
			reg = <0x0 0x4C000000 0x0 0xE00000>;
		};

		m3_dump: m3_dump@4CE00000 {
			no-map;
			reg = <0x0 0x4CE00000 0x0 0x100000>;
		};

		q6_etr_region: q6_etr_dump@4CF00000 {
			no-map;
			reg = <0x0 0x4CF00000 0x0 0x100000>;
		};

		q6_caldb_region: q6_caldb_region@4D000000 {
			no-map;
			reg = <0x0 0x4D000000 0x0 0x200000>;
		};

		q6_qcn6122_data1: q6_qcn6122_data1@4D200000 {
			no-map;
			reg = <0x0 0x4D200000 0x0 0x1000000>;
		};

		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 {
			no-map;
			reg = <0x0 0x4E200000 0x0 0x100000>;
		};

		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 {
			no-map;
			reg = <0x0 0x4E300000 0x0 0x100000>;
		};

		q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 {
			no-map;
			reg = <0x0 0x4E400000 0x0 0x500000>;
		};

		q6_qcn9000_region: qcn9000_pcie0@4E900000 {
			no-map;
			reg = <0x0 0x4E900000 0x0 0x02D00000>;
		};

		mhi_region1: dma_pool1@51600000 {
			compatible = "shared-dma-pool";
			no-map;
			reg = <0x0 0x51600000 0x0 0x01800000>;
		};
	#endif
	};

	soc {
		serial@78af000 {
			status = "ok";
		};

		blsp1_uart2: serial@78b0000 {
			pinctrl-0 = <&blsp1_uart_pins>;
			pinctrl-names = "default";
		};

		qpic_bam: dma@7984000{
			status = "ok";
		};

		nand: qpic-nand@79b0000 {
			pinctrl-0 = <&qspi_nand_pins>;
			pinctrl-names = "default";
			status = "ok";
		};

		spi_0: spi@78b5000 { /* BLSP1 QUP0 */
			pinctrl-0 = <&blsp0_spi_pins>;
			pinctrl-names = "default";
			cs-select = <0>;
			status = "ok";

			m25p80@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0>;
				compatible = "n25q128a11";
				linux,modalias = "m25p80", "n25q128a11";
				spi-max-frequency = <50000000>;
				use-default-sizes;
			};
		};

		mdio0: mdio@88000 {
			status = "ok";

			ethernet-phy@0 {
				reg = <7>;
			};
		};

		mdio1: mdio@90000 {
			status = "ok";
			pinctrl-0 = <&mdio1_pins>;
			pinctrl-names = "default";
			phy-reset-gpio = <&tlmm 39 0>;

			ethernet-phy@0 {
				reg = <28>;
			};
		};

		ess-instance {
			num_devices = <0x1>;
			ess-switch@0x39c00000 {
				switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/
				cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/
				qcom,port_phyinfo {
					port@0 {
						port_id = <1>;
						phy_address = <7>;
						mdiobus = <&mdio0>;
					};
					port@1 {
						port_id = <2>;
						phy_address = <0x1c>;
						mdiobus = <&mdio1>;
						port_mac_sel = "QGMAC_PORT";
					};
				};
				led_source@0 {
					source = <0>;
					mode = "normal";
					speed = "all";
					blink_en = "enable";
					active = "high";
				};
			};
		};

		wifi0: wifi@c000000 {
			status = "ok";
		};

		dp1 {
			device_type = "network";
			compatible = "qcom,nss-dp";
			clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>;
			clock-names = "nss-snoc-gmac-axi-clk";
			qcom,id = <1>;
			reg = <0x39C00000 0x10000>;
			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
			qcom,mactype = <2>;
			qcom,link-poll = <1>;
			qcom,phy-mdio-addr = <7>;
			mdio-bus = <&mdio0>;
			local-mac-address = [000000000000];
			phy-mode = "sgmii";
			qcom,rx-page-mode = <0>;
		};

		dp2 {
			device_type = "network";
			compatible = "qcom,nss-dp";
			clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>;
			clock-names = "nss-snoc-gmac-axi-clk";
			qcom,id = <2>;
			reg = <0x39D00000 0x10000>;
			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
			qcom,mactype = <2>;
			qcom,link-poll = <1>;
			qcom,phy-mdio-addr = <28>;
			mdio-bus = <&mdio1>;
			local-mac-address = [000000000000];
			phy-mode = "sgmii";
			qcom,rx-page-mode = <0>;
		};

		qcom,test@0 {
			status = "ok";
		};

		nss-macsec1 {
			compatible = "qcom,nss-macsec";
			phy_addr = <0x1c>;
			mdiobus = <&mdio1>;
		};
	};

	thermal-zones {
		status = "ok";
	};
};

&tlmm {
	pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>;
	pinctrl-names = "default";

	blsp0_uart_pins: uart_pins {
		blsp0_uart_rx_tx {
			pins = "gpio20", "gpio21";
			function = "blsp0_uart0";
			bias-disable;
		};
	};

	blsp1_uart_pins: blsp1_uart_pins {
		blsp1_uart_rx_tx {
			pins = "gpio23", "gpio25", "gpio24", "gpio26";
			function = "blsp1_uart2";
			bias-disable;
		};
	};

	blsp0_spi_pins: blsp0_spi_pins {
		mux {
			pins = "gpio10", "gpio11", "gpio12", "gpio13";
			function = "blsp0_spi";
			drive-strength = <2>;
			bias-disable;
		};
	};

	qspi_nand_pins: qspi_nand_pins {
		qspi_clock {
				pins = "gpio9";
				function = "qspi_clk";
				drive-strength = <8>;
				bias-disable;
			};

		qspi_cs {
				pins = "gpio8";
				function = "qspi_cs";
				drive-strength = <8>;
				bias-disable;
			};

		qspi_data {
				pins = "gpio4", "gpio5", "gpio6", "gpio7";
				function = "qspi_data";
				drive-strength = <8>;
				bias-disable;
			};
	};

	mdio1_pins: mdio_pinmux {
		mux_0 {
			pins = "gpio36";
			function = "mdc";
			drive-strength = <8>;
			bias-pull-up;
		};

		mux_1 {
			pins = "gpio37";
			function = "mdio";
			drive-strength = <8>;
			bias-pull-up;
		};
	};

	phy_led_pins: phy_led_pins {
		gephy_led_pin {
			pins = "gpio46";
			function = "led0";
			drive-strength = <8>;
			bias-pull-down;
		};
	};

	i2c_pins: i2c_pins {
		i2c_scl {
			pins = "gpio25";
			function = "blsp2_i2c1";
			drive-strength = <8>;
			bias-disable;
		};

		i2c_sda {
			pins = "gpio26";
			function = "blsp2_i2c1";
			drive-strength = <8>;
			bias-disable;
		};
	};
};

&usb3 {
	status = "ok";
	device-power-gpio = <&tlmm 24 1>;
};

&pcie_x2 {
	status = "ok";
	perst-gpio = <&tlmm 15 1>;
};

&dwc_0 {
	/delete-property/ #phy-cells;
	/delete-property/ phys;
	/delete-property/ phy-names;
};

&hs_m31phy_0 {
	status = "ok";
};

&pcie_x2phy {
	status = "ok";
};

&pcie_x2_rp {
        status = "ok";

	mhi_1: qcom,mhi@1 {
		reg = <0 0 0 0 0 >;
		qrtr_instance_id = <0x21>;
		#address-cells = <0x2>;
		#size-cells = <0x2>;
		memory-region = <&mhi_region1>;
#if !defined(__CNSS2__)
		qrtr_node_id = <0x20>;
		base-addr = <0x4CC00000>;
		m3-dump-addr = <0x4E000000>;
		etr-addr = <0x4E100000>;
		qcom,caldb-addr = <0x4E200000>;
		qcom,tgt-mem-mode = <0x1>;
		mhi,max-channels = <30>;
		mhi,timeout = <10000>;
#endif
	};
};

&wifi0 {
	/* IPQ5018 */
	qcom,multipd_arch;
#ifdef __IPQ_MEM_PROFILE_256_MB__
	qcom,tgt-mem-mode = <2>;
#else
	qcom,tgt-mem-mode = <1>;
#endif
	qcom,board_id = <0x23>;
	qcom,bdf-addr = <0x0 0x4C000000 0x4C000000 0x0 0x0>;
	qcom,caldb-addr = <0x0 0x4D000000 0 0 0>;
	qcom,caldb-size = <0x200000>;
	qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
	status = "ok";
};
