/dts-v1/;
/* Copyright (c) 2018-2020, The Linux Foundation. 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 "qcom-ipq5018.dtsi"

/ {
	#address-cells = <0x2>;
	#size-cells = <0x2>;
	model = "Edgecore EAP104";
	compatible = "edgecore,eap104", "qcom,ipq5018-mp03.5-c1", "qcom,ipq5018";
	interrupt-parent = <&intc>;

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

		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
	};

	chosen {
		bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
	#ifdef __IPQ_MEM_PROFILE_256_MB__
		bootargs-append = " swiotlb=1";
	#else
		bootargs-append = " swiotlb=1 coherent_pool=2M";
	#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    |              |                         |
	 * |   code/  |  0x4B000000  |          20MB           |
	 * |   data   |              |                         |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |   data   |  0x4C400000  |          13MB           |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |  M3 Dump |  0x4D100000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |   QDSS   |  0x4D200000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |   data   |  0x4D300000  |          15MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |  M3 Dump |  0x4E200000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |   QDSS   |  0x4E300000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |   data   |  0x4E400000  |          15MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |  M3 Dump |  0x4F300000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |   QDSS   |  0x4F400000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * |                                                   |
	 * |            Rest of the memory for Linux           |
	 * |                                                   |
	 * +===================================================+
	 */
		q6_mem_regions: q6_mem_regions@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 0x4500000>;
		};

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

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

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

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

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

		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_data2: q6_qcn6122_data2@4E400000 {
			no-map;
			reg = <0x0 0x4E400000 0x0 0xF00000>;
		};

		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 {
			no-map;
			reg = <0x0 0x4F300000 0x0 0x100000>;
		};

		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 {
			no-map;
			reg = <0x0 0x4F400000 0x0 0x100000>;
		};
	#else
	/*                 512MB/1GB Profiles
	 * +==========+==============+=========================+
	 * |          |              |                         |
	 * |  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    |              |                         |
	 * |   code/  |  0x4B000000  |          20MB           |
	 * |   data   |              |                         |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |   data   |  0x4C400000  |          14MB           |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |  M3 Dump |  0x4D200000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |   QDSS   |  0x4D300000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * |  IPQ5018 |              |                         |
	 * |  Caldb   |  0x4D400000  |           2MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |   data   |  0x4D600000  |          16MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |  M3 Dump |  0x4E600000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |   QDSS   |  0x4E700000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_1|              |                         |
	 * |  Caldb   |  0x4E800000  |           5MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |   data   |  0x4ED00000  |          16MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |  M3 Dump |  0x4FD00000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |   QDSS   |  0x4FE00000  |           1MB           |
	 * +----------+--------------+-------------------------+
	 * | QCN6122_2|              |                         |
	 * |  Caldb   |  0x4FF00000  |           5MB           |
	 * +----------+--------------+-------------------------+
	 * |                                                   |
	 * |            Rest of the memory for Linux           |
	 * |                                                   |
	 * +===================================================+
	 */
		q6_mem_regions: q6_mem_regions@4B000000 {
			no-map;
			reg = <0x0 0x4B000000 0x0 0x5400000>;
		};

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

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

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

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

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

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

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

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

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

		q6_qcn6122_data2: q6_qcn6122_data2@4E900000 {
			no-map;
			reg = <0x0 0x4ED00000 0x0 0x1000000>;
		};

		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4FD00000 {
			no-map;
			reg = <0x0 0x4FD00000 0x0 0x100000>;
		};

		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4FE00000 {
			no-map;
			reg = <0x0 0x4FE00000 0x0 0x100000>;
		};

		q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4FF00000 {
			no-map;
			reg = <0x0 0x4FF00000 0x0 0x500000>;
		};

	#endif
	};

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

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

		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 = <0>;
			};

			ethernet-phy@1 {
				reg = <1>;
			};

			ethernet-phy@2 {
				reg = <2>;
			};

			ethernet-phy@3 {
				reg = <3>;
			};
		};

		ess-instance {
			num_devices = <0x2>;
			ess-switch@0x39c00000 {
				compatible = "qcom,ess-switch-ipq50xx";
				device_id = <0>;
				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>;
					};
					port@1 {
						port_id = <2>;
						forced-speed = <1000>;
						forced-duplex = <1>;
					};
				};
				
				/*
				led_source@0 {
					source = <0>;
					mode = "normal";
					speed = "all";
					blink_en = "enable";
					active = "high";
				};
				*/
				
			};
			ess-switch1@1 {
				compatible = "qcom,ess-switch-qca83xx";
				device_id = <1>;
				switch_access_mode = "mdio";
				mdio-bus = <&mdio1>;
				reset_gpio = <0x27>;
				switch_cpu_bmp = <0x40>;  /* cpu port bitmap */
				switch_lan_bmp = <0x1e>; /* lan port bitmap */
				switch_wan_bmp = <0x0>;  /* wan port bitmap */
				qca,ar8327-initvals = <
						0x00004 0x7600000   /* PAD0_MODE */
						0x00008 0x1000000   /* PAD5_MODE */
						0x0000c 0x80        /* PAD6_MODE */
						0x00010 0x2613a0    /* PORT6 FORCE MODE*/
						0x000e4 0xaa545     /* MAC_POWER_SEL */
						0x000e0 0xc74164de  /* SGMII_CTRL */
						0x0007c 0x4e        /* PORT0_STATUS */
						0x00094 0x4e        /* PORT6_STATUS */
				>;
				qcom,port_phyinfo {
					port@0 {
						port_id = <1>;
						phy_address = <0>;
					};
					port@1 {
						port_id = <2>;
						phy_address = <1>;
					};
					port@2 {
						port_id = <3>;
						phy_address = <2>;
					};
					port@3 {
						port_id = <4>;
						phy_address = <3>;
					};
				};
			};
		};

		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";
		};

		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>;
			local-mac-address = [000000000000];
			phy-mode = "sgmii";
		};

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

		lpass: lpass@0xA000000{
			status = "disabled";
		};

		pcm: pcm@0xA3C0000{
			pinctrl-0 = <&audio_pins>;
			pinctrl-names = "default";
			status = "disabled";
		};

		pcm_lb: pcm_lb@0 {
			status = "disabled";
		};
	};

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

	gpio_keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&button_pins>;
		pinctrl-names = "default";

		wps {
			label = "reset";
			linux,code = <KEY_RESTART>;
			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			debounce-interval = <60>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&leds_pins>;
		pinctrl-names = "default";

		led@2 {
			label = "green:wifi5";
			gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
		led@3 {
			label = "green:wifi2";
			gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
		led_power: led@30 {
			label = "green:power";
			gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};
		led@42 {
			label = "orange:uplink";
			gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
		led@43 {
			label = "yellow:uplink";
			gpios = <&tlmm 43 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
		led@46 {
			label = "green:cloud";
			gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};
};

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

	leds_pins: leds_pins {
		led_5g {
			pins = "gpio2";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_2g {
			pins = "gpio3";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_power {
			pins = "gpio30";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_orange {
			pins = "gpio42";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_yellow {
			pins = "gpio43";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
		led_cloud {
			pins = "gpio46";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
	};
	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_0 {
			pins = "gpio7";
			function = "qspi0";
			drive-strength = <8>;
			bias-disable;
		};
		qspi_data_1 {
			pins = "gpio6";
			function = "qspi1";
			drive-strength = <8>;
			bias-disable;
		};
		qspi_data_2 {
			pins = "gpio5";
			function = "qspi2";
			drive-strength = <8>;
			bias-disable;
		};
		qspi_data_3 {
			pins = "gpio4";
			function = "qspi3";
			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"; */
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
	};
	
	ble_pins: ble_pins {
		ble_coex_grant {
			pins = "gpio19";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-down;
		};
	};

	i2c_pins: i2c_pins {
		i2c_scl {
			pins = "gpio33";
			function = "blsp2_i2c0";
			drive-strength = <8>;
			/* bias-disable; */
			bias-pull-up;
		};

		i2c_sda {
			pins = "gpio34";
			function = "blsp2_i2c0";
			drive-strength = <8>;
			/* bias-disable; */
			bias-pull-up;
		};
	};

	button_pins: button_pins {
		wps_button {
			pins = "gpio38";
			function = "gpio";
			drive-strength = <8>;
			bias-pull-up;
		};
	};

	audio_pins: audio_pinmux {
		mux_1 {
			pins = "gpio24";
			function = "audio_rxbclk";
			drive-strength = <8>;
			bias-pull-down;
		};

		mux_2 {
			pins = "gpio25";
			function = "audio_rxfsync";
			drive-strength = <8>;
			bias-pull-down;
		};

		mux_3 {
			pins = "gpio26";
			function = "audio_rxd";
			drive-strength = <8>;
			bias-pull-down;
		};

		mux_4 {
			pins = "gpio27";
			function = "audio_txmclk";
			drive-strength = <8>;
			bias-pull-down;
		};

		mux_5 {
			pins = "gpio28";
			function = "audio_txbclk";
			drive-strength = <8>;
			bias-pull-down;
		};

		mux_6 {
			pins = "gpio29";
			function = "audio_txfsync";
			drive-strength = <8>;
			bias-pull-down;
		};

		mux_7 {
			pins = "gpio30";
			function = "audio_txd";
			drive-strength = <8>;
			bias-pull-down;
		};
	};

};

/* Disable gpio 38 and 24 
&soc {
	gpio_keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&button_pins>;
		pinctrl-names = "default";

		button@1 {
			label = "wps";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			debounce-interval = <60>;
		};
	};
};

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

*/

&eud {
	status = "ok";
};

&pcie_x1 {
	status = "disabled";
	perst-gpio = <&tlmm 18 1>;
};

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

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

&hs_m31phy_0 {
	status = "ok";
};

&pcie_x1phy {
	status = "disabled";
};

&pcie_x2phy {
	status = "disabled";
};

&pcie_x1_rp {
        status = "disabled";

	mhi_0: qcom,mhi@0 {
		reg = <0 0 0 0 0 >;
	};
};

&pcie_x2_rp {
        status = "disabled";

	mhi_1: qcom,mhi@1 {
		reg = <0 0 0 0 0 >;

	};
};

&qfprom {
	status = "ok";
};

&tsens {
	status = "ok";
};

&qcom_q6v5_wcss {
	qcom,multipd_arch;
	memory-region = <&q6_mem_regions>;
	qcom,share_bootargs;
	qcom,bootargs_smem = <507>;
	boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>,
			<0x2 0x4 0x2 0x12 0x0 0x0>;
	/* IPQ5018 */
	q6v5_wcss_userpd1 {
		m3_firmware = "IPQ5018/m3_fw.mdt";
		interrupts-extended = <&wcss_smp2p_in 8 0>,
			<&wcss_smp2p_in 9 0>,
			<&wcss_smp2p_in 12 0>,
			<&wcss_smp2p_in 11 0>;
		interrupt-names ="fatal",
			"ready",
			"spawn_ack",
			"stop-ack";
		qcom,smem-states = <&wcss_smp2p_out 8>,
			<&wcss_smp2p_out 9>,
			<&wcss_smp2p_out 10>;
		qcom,smem-state-names = "shutdown",
			"stop",
			"spawn";
		qca,asid = <1>;
		qca,auto-restart;
		qca,int_radio;
		#ifdef __IPQ_MEM_PROFILE_256_MB__
		memory-region = <&q6_ipq5018_data>, <&m3_dump>,
				<&q6_etr_region>;
		#else
		memory-region = <&q6_ipq5018_data>, <&m3_dump>,
				<&q6_etr_region>, <&q6_caldb_region>;
		#endif
	};

	/* QCN6122 6G */
	q6v5_wcss_userpd2 {
		m3_firmware = "qcn6122/m3_fw.mdt";
		interrupts-extended = <&wcss_smp2p_in 16 0>,
			<&wcss_smp2p_in 17 0>,
			<&wcss_smp2p_in 20 0>,
			<&wcss_smp2p_in 19 0>;
		interrupt-names ="fatal",
			"ready",
			"spawn_ack",
			"stop-ack";
		qcom,smem-states = <&wcss_smp2p_out 16>,
			<&wcss_smp2p_out 17>,
			<&wcss_smp2p_out 18>;
		qcom,smem-state-names = "shutdown",
			"stop",
			"spawn";
		qca,asid = <2>;
		qca,auto-restart;
		#ifdef __IPQ_MEM_PROFILE_256_MB__
		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>,
				<&q6_qcn6122_etr_1>;
		#else
		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>,
				<&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>;
		#endif
	};

	/* QCN6122 5G */
	q6v5_wcss_userpd3 {
		m3_firmware = "qcn6122/m3_fw.mdt";
		interrupts-extended = <&wcss_smp2p_in 24 0>,
			<&wcss_smp2p_in 25 0>,
			<&wcss_smp2p_in 28 0>,
			<&wcss_smp2p_in 27 0>;
		interrupt-names ="fatal",
			"ready",
			"spawn_ack",
			"stop-ack";
		qcom,smem-states = <&wcss_smp2p_out 24>,
			<&wcss_smp2p_out 25>,
			<&wcss_smp2p_out 26>;
		qcom,smem-state-names = "shutdown",
			"stop",
			"spawn";
		qca,asid = <3>;
		qca,auto-restart;
		#ifdef __IPQ_MEM_PROFILE_256_MB__
		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>,
				<&q6_qcn6122_etr_2>;
		#else
		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>,
				<&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>;
		#endif
	};
};

&i2c_0 {
	pinctrl-0 = <&i2c_pins>;
	pinctrl-names = "default";
	/* status = "disabled"; */
	status = "ok";
};

&qgic_msi_0 {
	status = "ok";
};

&qgic_msi_1 {
	status = "ok";
};

&wifi0 {
	/* IPQ5018 */
	qcom,multipd_arch;
	qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
#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 = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>;
#ifdef __CNSS2__
	qcom,caldb-addr = <0x4D400000 0x4D400000 0 0 0>;
#else
	qcom,caldb-addr = <0x4D400000>;
	m3-dump-addr = <0x4D200000>;
#endif
	qcom,caldb-size = <0x200000>;
	status = "ok";
};

&wifi1 {
	/* QCN6122 5G */
	qcom,multipd_arch;
	qcom,userpd-subsys-name = "q6v5_wcss_userpd2";
#ifdef __IPQ_MEM_PROFILE_256_MB__
	qcom,tgt-mem-mode = <2>;
#else
	qcom,tgt-mem-mode = <1>;
#endif
	qcom,board_id = <0x50>;
	qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>;
#ifdef __CNSS2__
	qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>;
#else
	qcom,caldb-addr = <0x4E800000>;
	m3-dump-addr = <0x4E600000>;
#endif
	qcom,caldb-size = <0x500000>;
	status = "disabled";
};

&wifi2 {
	/* QCN6122 6G */
	qcom,multipd_arch;
	qcom,userpd-subsys-name = "q6v5_wcss_userpd3";
#ifdef __IPQ_MEM_PROFILE_256_MB__
	qcom,tgt-mem-mode = <2>;
#else
	qcom,tgt-mem-mode = <1>;
#endif
	qcom,board_id = <0xb0>;
	qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>;
#ifdef __CNSS2__
	qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>;
#else
	qcom,caldb-addr = <0x4FF00000>;
	m3-dump-addr = <0x4FD00000>;
#endif
	qcom,caldb-size = <0x500000>;
	status = "ok";
};
