/* Copyright (c) 2014-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.
 */

#include <dt-bindings/msm/msm-bus-ids.h>
#include <dt-bindings/msm/msm-bus-rule-ops.h>

&soc {
	static-rules {
		compatible = "qcom,msm-bus-static-bw-rules";

		rule0 {
			qcom,src-nodes = <&mas_apps_proc>;
			qcom,src-field = <FLD_CLK>;
			qcom,src-op = <OP_LE>;
			qcom,thresh = <200000>;
			qcom,mode = <THROTTLE_ON>;
			qcom,dest-node = <&mas_apps_proc>;
			qcom,dest-bw = <600000>;
		};

		rule1 {
			qcom,src-nodes = <&mas_apps_proc>;
			qcom,src-field = <FLD_CLK>;
			qcom,src-op = <OP_LE>;
			qcom,thresh = <400000>;
			qcom,mode = <THROTTLE_ON>;
			qcom,dest-node = <&mas_apps_proc>;
			qcom,dest-bw = <1200000>;
		};

		rule2 {
			qcom,src-nodes = <&mas_apps_proc>;
			qcom,src-field = <FLD_CLK>;
			qcom,src-op = <OP_GT>;
			qcom,thresh = <400000>;
			qcom,mode = <THROTTLE_OFF>;
			qcom,dest-node = <&mas_apps_proc>;
		};

		rule3 {
			qcom,src-nodes = <&mas_oxili>;
			qcom,src-field = <FLD_CLK>;
			qcom,src-op = <OP_LE>;
			qcom,thresh = <200000>;
			qcom,mode = <THROTTLE_ON>;
			qcom,dest-node = <&mas_oxili>;
			qcom,dest-bw = <600000>;
		};

		rule4 {
			qcom,src-nodes = <&mas_oxili>;
			qcom,src-field = <FLD_CLK>;
			qcom,src-op = <OP_LE>;
			qcom,thresh = <400000>;
			qcom,mode = <THROTTLE_ON>;
			qcom,dest-node = <&mas_oxili>;
			qcom,dest-bw = <1200000>;
		};

		rule5 {
			qcom,src-nodes = <&mas_oxili>;
			qcom,src-field = <FLD_CLK>;
			qcom,src-op = <OP_GT>;
			qcom,thresh = <400000>;
			qcom,mode = <THROTTLE_OFF>;
			qcom,dest-node = <&mas_oxili>;
		};
	};

	/* Version = 2 */
	ad_hoc_bus: ad-hoc-bus {
		compatible = "qcom,msm-bus-device";
		reg = <0x580000 0x13000>,
			<0x580000 0x13000>,
			<0x400000 0x62000>,
			<0x500000 0x11000>;
		reg-names = "snoc-base", "snoc-mm-base", "bimc-base", "pcnoc-base";

		/*Buses*/

		fab_bimc: fab-bimc {
			cell-id = <MSM_BUS_FAB_BIMC>;
			label = "fab-bimc";
			qcom,fab-dev;
			qcom,base-name = "bimc-base";
			qcom,bus-type = <2>;
			qcom,util-fact = <154>;
			clock-names = "bus_clk", "bus_a_clk";
			clocks = <&clock_rpm  clk_bimc_msmbus_clk>,
				<&clock_rpm  clk_bimc_msmbus_a_clk>;

			coresight-id = <55>;
			coresight-name = "coresight-bimc";
			coresight-nr-inports = <0>;
			coresight-outports = <0>;
			coresight-child-list = <&funnel_in2>;
			coresight-child-ports = <3>;
		};

		fab_pcnoc: fab-pcnoc {
			cell-id = <MSM_BUS_FAB_PERIPH_NOC>;
			label = "fab-pcnoc";
			qcom,fab-dev;
			qcom,base-name = "pcnoc-base";
			qcom,base-offset = <0x7000>;
			qcom,qos-delta = <0x1000>;
			qcom,bus-type = <1>;
			clock-names = "bus_clk", "bus_a_clk";
			clocks = <&clock_rpm  clk_pcnoc_msmbus_clk>,
				<&clock_rpm  clk_pcnoc_msmbus_a_clk>;

			coresight-id = <54>;
			coresight-name = "coresight-pcnoc";
			coresight-nr-inports = <0>;
			coresight-outports = <0>;
			coresight-child-list = <&funnel_in2>;
			coresight-child-ports = <6>;
		};

		fab_snoc: fab-snoc {
			cell-id = <MSM_BUS_FAB_SYS_NOC>;
			label = "fab-snoc";
			qcom,fab-dev;
			qcom,base-name = "snoc-base";
			qcom,base-offset = <0x7000>;
			qcom,qos-off = <0x1000>;
			qcom,bus-type = <1>;
			clock-names = "bus_clk", "bus_a_clk", "bus_qos_clk";
			clocks = <&clock_rpm  clk_snoc_msmbus_clk>,
				<&clock_rpm  clk_snoc_msmbus_a_clk>,
				<&clock_gcc clk_gcc_snoc_qosgen_clk>;

			coresight-id = <50>;
			coresight-name = "coresight-snoc";
			coresight-nr-inports = <0>;
			coresight-outports = <0>;
			coresight-child-list = <&funnel_in2>;
			coresight-child-ports = <5>;
		};

		fab_snoc_mm: fab-snoc-mm {
			cell-id = <MSM_BUS_FAB_MMSS_NOC>;
			label = "fab-snoc-mm";
			qcom,fab-dev;
			qcom,base-name = "snoc-mm-base";
			qcom,base-offset = <0x7000>;
			qcom,qos-off = <0x1000>;
			qcom,bus-type = <1>;
			qcom,util-fact = <167>;
			clock-names = "bus_clk", "bus_a_clk";
			clocks = <&clock_rpm  clk_snoc_mm_msmbus_clk>,
				<&clock_rpm  clk_snoc_mm_msmbus_a_clk>;
		};

		/* Masters */
		mas_apps_proc: mas-apps-proc {
			cell-id = <MSM_BUS_MASTER_AMPSS_M0>;
			label = "mas-apps-proc";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <0>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&slv_bimc_snoc &slv_ebi>;
			qcom,prio-lvl = <0>;
			qcom,prio-rd = <0>;
			qcom,prio-wr = <0>;
			qcom,ws = <10000>;
			qcom,gp = <5000>;
			qcom,thmp = <50>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,mas-rpm-id = <ICBID_MASTER_APPSS_PROC>;
		};

		mas_oxili: mas-oxili {
			cell-id = <MSM_BUS_MASTER_GRAPHICS_3D>;
			label = "mas-oxili";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <2>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&slv_bimc_snoc &slv_ebi>;
			qcom,prio-lvl = <0>;
			qcom,prio-rd = <0>;
			qcom,prio-wr = <0>;
			qcom,ws = <10000>;
			qcom,gp = <5000>;
			qcom,thmp = <50>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,mas-rpm-id = <ICBID_MASTER_GFX3D>;
		};

		mas_snoc_bimc_0: mas-snoc-bimc-0 {
			cell-id = <MSM_BUS_SNOC_BIMC_0_MAS>;
			label = "mas-snoc-bimc-0";
			qcom,buswidth = <8>;
			qcom,qport = <3>;
			qcom,qos-mode = "bypass";
			qcom,connections = <&slv_ebi>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SNOC_BIMC_0>;
		};

		mas_snoc_bimc_1: mas-snoc-bimc-1 {
			cell-id = <MSM_BUS_SNOC_BIMC_1_MAS>;
			label = "mas-snoc-bimc-1";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <4>;
			qcom,qos-mode = "bypass";
			qcom,connections = <&slv_ebi>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SNOC_BIMC_1>;
		};

		mas_tcu_0: mas-tcu-0 {
			cell-id = <MSM_BUS_MASTER_TCU_0>;
			label = "mas-tcu-0";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <5>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&slv_bimc_snoc &slv_ebi>;
			qcom,prio-lvl = <2>;
			qcom,prio-rd = <2>;
			qcom,prio-wr = <2>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,mas-rpm-id = <ICBID_MASTER_TCU_0>;
		};

		mas_tcu_1: mas-tcu-1 {
			cell-id = <MSM_BUS_MASTER_TCU_1>;
			label = "mas-tcu-1";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <6>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&slv_bimc_snoc &slv_ebi>;
			qcom,prio-lvl = <2>;
			qcom,prio-rd = <2>;
			qcom,prio-wr = <2>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,mas-rpm-id = <ICBID_MASTER_TCU_1>;
		};

		mas_audio: mas-audio {
			cell-id = <MSM_BUS_MASTER_AUDIO>;
			label = "mas-audio";
			qcom,buswidth = <4>;
			qcom,connections = <&pcnoc_m_0>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_AUDIO>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_spdm: mas-spdm {
			cell-id = <MSM_BUS_MASTER_SPDM>;
			label = "mas-spdm";
			qcom,buswidth = <4>;
			qcom,connections = <&pcnoc_m_0>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SPDM>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_dehr: mas-dehr {
			cell-id = <MSM_BUS_MASTER_DEHR>;
			label = "mas-dehr";
			qcom,buswidth = <4>;
			qcom,connections = <&pcnoc_m_0>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_DEHR>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_qpic: mas-qpic {
			cell-id = <MSM_BUS_MASTER_QPIC>;
			label = "mas-qpic";
			qcom,buswidth = <4>;
			qcom,connections = <&pcnoc_m_0>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_QPIC>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_blsp_1: mas-blsp-1 {
			cell-id = <MSM_BUS_MASTER_BLSP_1>;
			label = "mas-blsp-1";
			qcom,buswidth = <4>;
			qcom,connections = <&pcnoc_m_1>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_BLSP_1>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_usb_hs: mas-usb-hs {
			cell-id = <MSM_BUS_MASTER_USB_HS>;
			label = "mas-usb-hs";
			qcom,buswidth = <4>;
			qcom,connections = <&pcnoc_m_1>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_USB_HS>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_crypto: mas-crypto {
			cell-id = <MSM_BUS_MASTER_CRYPTO_CORE0>;
			label = "mas-crypto";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <0>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&pcnoc_int_1>;
			qcom,prio1 = <0>;
			qcom,prio0 = <0>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_CRYPTO>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_sdcc_1: mas-sdcc-1 {
			cell-id = <MSM_BUS_MASTER_SDCC_1>;
			label = "mas-sdcc-1";
			qcom,buswidth = <8>;
			qcom,qport = <7>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&pcnoc_int_1>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SDCC_1>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_sdcc_2: mas-sdcc-2 {
			cell-id = <MSM_BUS_MASTER_SDCC_2>;
			label = "mas-sdcc-2";
			qcom,buswidth = <8>;
			qcom,qport = <8>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&pcnoc_int_1>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SDCC_2>;
			qcom,blacklist = <&slv_blsp_1 &slv_message_ram &slv_usb_hs
				 &slv_venus_cfg &slv_gpu_cfg &slv_camera_ss_cfg
				 &slv_crypto_0_cfg &slv_tlmm &slv_tcu
				 &slv_pdm &slv_snoc_cfg &slv_qpic
				 &slv_tcsr &slv_prng &slv_sdcc_2
				 &slv_pmic_arb &slv_disp_ss_cfg &slv_usb_phy
				 &slv_sdcc_1 &slv_audio>;
		};

		mas_snoc_pcnoc: mas-snoc-pcnoc {
			cell-id = <MSM_BUS_SNOC_PNOC_MAS>;
			label = "mas-snoc-pcnoc";
			qcom,buswidth = <8>;
			qcom,qport = <9>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&pcnoc_int_0>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SNOC_PCNOC>;
		};

		mas_qdss_bam: mas-qdss-bam {
			cell-id = <MSM_BUS_MASTER_QDSS_BAM>;
			label = "mas-qdss-bam";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,qport = <11>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&qdss_int>;
			qcom,prio1 = <1>;
			qcom,prio0 = <1>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_QDSS_BAM>;
			qcom,blacklist = <&slv_kpss_ahb &slv_cats_1 &slv_qdss_stm
				 &slv_cats_0>;
		};

		mas_bimc_snoc: mas-bimc-snoc {
			cell-id = <MSM_BUS_BIMC_SNOC_MAS>;
			label = "mas-bimc-snoc";
			qcom,buswidth = <8>;
			qcom,connections = <&snoc_int_0 &snoc_int_1>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_BIMC_SNOC>;
		};

		mas_mdp: mas-mdp {
			cell-id = <MSM_BUS_MASTER_MDP_PORT0>;
			label = "mas-mdp";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,qport = <7>;
			qcom,qos-mode = "bypass";
			qcom,connections = <&mm_int_1 &mm_int_2>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_MDP>;
			qcom,blacklist = <&slv_kpss_ahb &slv_imem &slv_cats_1
				 &slv_qdss_stm &slv_cats_0>;
		};

		mas_pcnoc_snoc: mas-pcnoc-snoc {
			cell-id = <MSM_BUS_PNOC_SNOC_MAS>;
			label = "mas-pcnoc-snoc";
			qcom,buswidth = <8>;
			qcom,qport = <5>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&snoc_int_0 &snoc_int_1 &snoc_int_bimc>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PNOC_SNOC>;
			qcom,blacklist = <&slv_cats_1 &slv_cats_0>;
		};

		mas_venus: mas-venus {
			cell-id = <MSM_BUS_MASTER_VIDEO_P0>;
			label = "mas-venus";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,qport = <8>;
			qcom,qos-mode = "bypass";
			qcom,connections = <&mm_int_0 &mm_int_2>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_VIDEO>;
			qcom,blacklist = <&slv_kpss_ahb &slv_imem &slv_cats_1
				 &slv_qdss_stm &slv_cats_0>;
		};

		mas_vfe: mas-vfe {
			cell-id = <MSM_BUS_MASTER_VFE>;
			label = "mas-vfe";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,qport = <9>;
			qcom,qos-mode = "bypass";
			qcom,connections = <&mm_int_1 &mm_int_2>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_VFE>;
			qcom,blacklist = <&slv_kpss_ahb &slv_imem &slv_cats_1
				 &slv_qdss_stm &slv_cats_0>;
		};

		mas_qdss_etr: mas-qdss-etr {
			cell-id = <MSM_BUS_MASTER_QDSS_ETR>;
			label = "mas-qdss-etr";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,qport = <10>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&qdss_int>;
			qcom,prio1 = <1>;
			qcom,prio0 = <1>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_QDSS_ETR>;
			qcom,blacklist = <&slv_kpss_ahb &slv_cats_1 &slv_qdss_stm
				 &slv_cats_0>;
		};

	/*Internal nodes*/
		pcnoc_m_0: pcnoc-m-0 {
			cell-id = <MSM_BUS_PNOC_M_0>;
			label = "pcnoc-m-0";
			qcom,buswidth = <8>;
			qcom,qport = <5>;
			qcom,qos-mode = "bypass";
			qcom,connections = <&slv_pcnoc_snoc>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_M_0>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_M_0>;
		};

		pcnoc_m_1: pcnoc-m-1 {
			cell-id = <MSM_BUS_PNOC_M_1>;
			label = "pcnoc-m-1";
			qcom,buswidth = <8>;
			qcom,qport = <6>;
			qcom,qos-mode = "fixed";
			qcom,connections = <&slv_pcnoc_snoc>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_M_1>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_M_1>;
		};

		pcnoc_int_0: pcnoc-int-0 {
			cell-id = <MSM_BUS_PNOC_INT_0>;
			label = "pcnoc-int-0";
			qcom,buswidth = <8>;
			qcom,connections = <&pcnoc_s_3 &pcnoc_s_2 &pcnoc_s_1 &pcnoc_s_0 &pcnoc_s_7 &pcnoc_s_5 &pcnoc_s_4 &slv_tcu>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_INT_0>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_INT_0>;
		};

		pcnoc_int_1: pcnoc-int-1 {
			cell-id = <MSM_BUS_PNOC_INT_1>;
			label = "pcnoc-int-1";
			qcom,buswidth = <8>;
			qcom,connections = <&slv_pcnoc_snoc>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_INT_1>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_INT_1>;
		};

		pcnoc_s_0: pcnoc-s-0 {
			cell-id = <MSM_BUS_PNOC_SLV_0>;
			label = "pcnoc-s-0";
			qcom,buswidth = <4>;
			qcom,connections = <&slv_sdcc_1 &slv_tcsr &slv_blsp_1>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_0>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_0>;
		};

		pcnoc_s_1: pcnoc-s-1 {
			cell-id = <MSM_BUS_PNOC_SLV_1>;
			label = "pcnoc-s-1";
			qcom,buswidth = <4>;
			qcom,connections = <&slv_message_ram &slv_crypto_0_cfg &slv_usb_hs &slv_pdm &slv_prng &slv_qpic>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_1>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_1>;
		};

		pcnoc_s_2: pcnoc-s-2 {
			cell-id = <MSM_BUS_PNOC_SLV_2>;
			label = "pcnoc-s-2";
			qcom,buswidth = <4>;
			qcom,connections = <&slv_spdm &slv_sdcc_2 &slv_audio &slv_dehr_cfg>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_2>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_2>;
		};

		pcnoc_s_3: pcnoc-s-3 {
			cell-id = <MSM_BUS_PNOC_SLV_3>;
			label = "pcnoc-s-3";
			qcom,buswidth = <4>;
			qcom,connections = <&slv_qdss_cfg &slv_usb_phy &slv_snoc_cfg>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_3>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_3>;
		};

		pcnoc_s_4: pcnoc-s-4 {
			cell-id = <MSM_BUS_PNOC_SLV_4>;
			label = "pcnoc-s-4";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,connections = <&slv_camera_ss_cfg &slv_disp_ss_cfg &slv_venus_cfg>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_4>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_4>;
		};

		pcnoc_s_5: pcnoc-s-5 {
			cell-id = <MSM_BUS_PNOC_SLV_5>;
			label = "pcnoc-s-5";
			qcom,buswidth = <4>;
			qcom,connections = <&slv_tlmm>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_5>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_5>;
		};

		pcnoc_s_7: pcnoc-s-7 {
			cell-id = <MSM_BUS_PNOC_SLV_7>;
			label = "pcnoc-s-7";
			qcom,buswidth = <4>;
			qcom,connections = <&slv_gpu_cfg &slv_imem_cfg &slv_bimc_cfg &slv_pmic_arb>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_PCNOC_S_7>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_S_7>;
		};

		mm_int_0: mm-int-0 {
			cell-id = <MSM_BUS_SNOC_MM_INT_0>;
			label = "mm-int-0";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,connections = <&mm_int_bimc>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_MM_INT_0>;
			qcom,slv-rpm-id = <ICBID_SLAVE_MM_INT_0>;
		};

		mm_int_1: mm-int-1 {
			cell-id = <MSM_BUS_SNOC_MM_INT_1>;
			label = "mm-int-1";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,connections = <&mm_int_bimc>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_MM_INT_1>;
			qcom,slv-rpm-id = <ICBID_SLAVE_MM_INT_1>;
		};

		mm_int_2: mm-int-2 {
			cell-id = <MSM_BUS_SNOC_MM_INT_2>;
			label = "mm-int-2";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,connections = <&snoc_int_0>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_MM_INT_2>;
			qcom,slv-rpm-id = <ICBID_SLAVE_MM_INT_2>;
		};

		mm_int_bimc: mm-int-bimc {
			cell-id = <MSM_BUS_SNOC_MM_INT_BIMC>;
			label = "mm-int-bimc";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,connections = <&slv_snoc_bimc_1>;
			qcom,bus-dev = <&fab_snoc_mm>;
			qcom,mas-rpm-id = <ICBID_MASTER_MM_INT_BIMC>;
			qcom,slv-rpm-id = <ICBID_SLAVE_MM_INT_BIMC>;
		};

		qdss_int: qdss-int {
			cell-id = <MSM_BUS_SNOC_QDSS_INT>;
			label = "qdss-int";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,connections = <&snoc_int_0 &snoc_int_bimc>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_QDSS_INT>;
			qcom,slv-rpm-id = <ICBID_SLAVE_QDSS_INT>;
		};

		snoc_int_0: snoc-int-0 {
			cell-id = <MSM_BUS_SNOC_INT_0>;
			label = "snoc-int-0";
			qcom,buswidth = <8>;
			qcom,connections = <&slv_imem &slv_qdss_stm &slv_snoc_pcnoc>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SNOC_INT_0>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_INT_0>;
		};

		snoc_int_1: snoc-int-1 {
			cell-id = <MSM_BUS_SNOC_INT_1>;
			label = "snoc-int-1";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,connections = <&slv_cats_0 &slv_kpss_ahb &slv_cats_1>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SNOC_INT_1>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_INT_1>;
		};

		snoc_int_bimc: snoc-int-bimc {
			cell-id = <MSM_BUS_SNOC_INT_BIMC>;
			label = "snoc-int-bimc";
			qcom,buswidth = <8>;
			qcom,connections = <&slv_snoc_bimc_0>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,mas-rpm-id = <ICBID_MASTER_SNOC_INT_BIMC>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_INT_BIMC>;
		};

	/*Slaves*/
		slv_ebi:slv-ebi {
			cell-id = <MSM_BUS_SLAVE_EBI_CH0>;
			label = "slv-ebi";
			qcom,buswidth = <8>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_EBI1>;
		};

		slv_bimc_snoc:slv-bimc-snoc {
			cell-id = <MSM_BUS_BIMC_SNOC_SLV>;
			label = "slv-bimc-snoc";
			qcom,buswidth = <8>;
			qcom,bus-dev = <&fab_bimc>;
			qcom,connections = <&mas_bimc_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_BIMC_SNOC>;
		};

		slv_tcsr:slv-tcsr {
			cell-id = <MSM_BUS_SLAVE_TCSR>;
			label = "slv-tcsr";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_TCSR>;
		};

		slv_sdcc_1:slv-sdcc-1 {
			cell-id = <MSM_BUS_SLAVE_SDCC_1>;
			label = "slv-sdcc-1";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SDCC_1>;
		};

		slv_blsp_1:slv-blsp-1 {
			cell-id = <MSM_BUS_SLAVE_BLSP_1>;
			label = "slv-blsp-1";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_BLSP_1>;
		};

		slv_crypto_0_cfg:slv-crypto-0-cfg {
			cell-id = <MSM_BUS_SLAVE_CRYPTO_0_CFG>;
			label = "slv-crypto-0-cfg";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_CRYPTO_0_CFG>;
		};

		slv_message_ram:slv-message-ram {
			cell-id = <MSM_BUS_SLAVE_MESSAGE_RAM>;
			label = "slv-message-ram";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_MESSAGE_RAM>;
		};

		slv_pdm:slv-pdm {
			cell-id = <MSM_BUS_SLAVE_PDM>;
			label = "slv-pdm";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PDM>;
		};

		slv_prng:slv-prng {
			cell-id = <MSM_BUS_SLAVE_PRNG>;
			label = "slv-prng";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PRNG>;
		};

		slv_usb_hs:slv-usb-hs {
			cell-id = <MSM_BUS_SLAVE_USB_HS>;
			label = "slv-usb-hs";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_USB_HS>;
		};

		slv_qpic:slv-qpic {
			cell-id = <MSM_BUS_SLAVE_QPIC>;
			label = "slv-qpic";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_QPIC>;
		};

		slv_spdm: slv-spdm {
			cell-id = <MSM_BUS_SLAVE_SPDM>;
			label = "slv-spdm";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SPDM_WRAPPER>;
		};

		slv_sdcc_2:slv-sdcc-2 {
			cell-id = <MSM_BUS_SLAVE_SDCC_2>;
			label = "slv-sdcc-2";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SDCC_2>;
		};

		slv_audio:slv-audio {
			cell-id = <MSM_BUS_SLAVE_AUDIO>;
			label = "slv-audio";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_AUDIO>;
		};

		slv_dehr_cfg: slv-dehr-cfg {
			cell-id = <MSM_BUS_SLAVE_DEHR_CFG>;
			label = "slv-dehr-cfg";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_DEHR_CFG>;
		};

		slv_snoc_cfg:slv-snoc-cfg {
			cell-id = <MSM_BUS_SLAVE_SNOC_CFG>;
			label = "slv-snoc-cfg";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_CFG>;
		};

		slv_qdss_cfg: slv-qdss-cfg {
			cell-id = <MSM_BUS_SLAVE_QDSS_CFG>;
			label = "slv-qdss-cfg";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_QDSS_CFG>;
		};

		slv_usb_phy:slv-usb-phy {
			cell-id = <MSM_BUS_SLAVE_USB_PHYS_CFG>;
			label = "slv-usb-phy";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_USB_PHY_CFG>;
		};

		slv_camera_ss_cfg:slv-camera-ss-cfg {
			cell-id = <MSM_BUS_SLAVE_CAMERA_CFG>;
			label = "slv-camera-ss-cfg";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_CAMERA_CFG>;
		};

		slv_disp_ss_cfg:slv-disp-ss-cfg {
			cell-id = <MSM_BUS_SLAVE_DISPLAY_CFG>;
			label = "slv-disp-ss-cfg";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_DISPLAY_CFG>;
		};

		slv_venus_cfg:slv-venus-cfg {
			cell-id = <MSM_BUS_SLAVE_VENUS_CFG>;
			label = "slv-venus-cfg";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_VENUS_CFG>;
		};

		slv_tlmm:slv-tlmm {
			cell-id = <MSM_BUS_SLAVE_TLMM>;
			label = "slv-tlmm";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_TLMM>;
		};

		slv_gpu_cfg:slv-gpu-cfg {
			cell-id = <MSM_BUS_SLAVE_GRAPHICS_3D_CFG>;
			label = "slv-gpu-cfg";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_GFX3D_CFG>;
		};

		slv_imem_cfg: slv-imem-cfg {
			cell-id = <MSM_BUS_SLAVE_IMEM_CFG>;
			label = "slv-imem-cfg";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_IMEM_CFG>;
		};

		 slv_bimc_cfg: slv-bimc-cfg {
			cell-id = <MSM_BUS_SLAVE_BIMC_CFG>;
			label = "slv-bimc-cfg";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_BIMC_CFG>;
		};

		slv_pmic_arb:slv-pmic-arb {
			cell-id = <MSM_BUS_SLAVE_PMIC_ARB>;
			label = "slv-pmic-arb";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PMIC_ARB>;
		};

		slv_tcu:slv-tcu {
			cell-id = <MSM_BUS_SLAVE_TCU>;
			label = "slv-tcu";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_TCU>;
		};

		slv_pcnoc_snoc:slv-pcnoc-snoc {
			cell-id = <MSM_BUS_PNOC_SNOC_SLV>;
			label = "slv-pcnoc-snoc";
			qcom,buswidth = <8>;
			qcom,bus-dev = <&fab_pcnoc>;
			qcom,connections = <&mas_pcnoc_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_PCNOC_SNOC>;
		};

		slv_kpss_ahb:slv-kpss-ahb {
			cell-id = <MSM_BUS_SLAVE_APPSS>;
			label = "slv-kpss-ahb";
			qcom,buswidth = <4>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_APPSS>;
		};

		slv_snoc_bimc_0:slv-snoc-bimc-0 {
			cell-id = <MSM_BUS_SNOC_BIMC_0_SLV>;
			label = "slv-snoc-bimc-0";
			qcom,buswidth = <8>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,connections = <&mas_snoc_bimc_0>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_BIMC_0>;
		};

		slv_snoc_bimc_1:slv-snoc-bimc-1 {
			cell-id = <MSM_BUS_SNOC_BIMC_1_SLV>;
			label = "slv-snoc-bimc-1";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_snoc>;
			qcom,connections = <&mas_snoc_bimc_1>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_BIMC_1>;
		};

		slv_imem:slv-imem {
			cell-id = <MSM_BUS_SLAVE_SYSTEM_IMEM>;
			label = "slv-imem";
			qcom,buswidth = <8>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_IMEM>;
		};

		slv_snoc_pcnoc:slv-snoc-pcnoc {
			cell-id = <MSM_BUS_SNOC_PNOC_SLV>;
			label = "slv-snoc-pcnoc";
			qcom,buswidth = <8>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,connections = <&mas_snoc_pcnoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_SNOC_PCNOC>;
		};

		slv_qdss_stm:slv-qdss-stm {
			cell-id = <MSM_BUS_SLAVE_QDSS_STM>;
			label = "slv-qdss-stm";
			qcom,buswidth = <4>;
			qcom,bus-dev = <&fab_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_QDSS_STM>;
		};

		slv_cats_0:slv-cats-0 {
			cell-id = <MSM_BUS_SLAVE_CATS_128>;
			label = "slv-cats-0";
			qcom,buswidth = <16>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_CATS_0>;
		};

		slv_cats_1:slv-cats-1 {
			cell-id = <MSM_BUS_SLAVE_OCMEM_64>;
			label = "slv-cats-1";
			qcom,buswidth = <8>;
			qcom,ap-owned;
			qcom,bus-dev = <&fab_snoc>;
			qcom,slv-rpm-id = <ICBID_SLAVE_CATS_1>;
		};
	};

	devfreq_spdm_cpu {
		compatible = "qcom,devfreq_spdm";
		qcom,msm-bus,name = "devfreq_spdm";
		qcom,msm-bus,num-cases = <2>;
		qcom,msm-bus,num-paths = <1>;
		qcom,msm-bus,vectors-KBps =
				<1 512 0 0>,
				<1 512 0 0>;
		qcom,msm-bus,active-only;
		qcom,spdm-client = <0>;

		clock-names = "cci_clk";
		clocks = <&clock_cpu clk_a7ssmux>;

		qcom,bw-upstep = <400>;
		qcom,bw-dwnstep = <400>;
		qcom,max-vote = <4000>;
		qcom,up-step-multp = <3>;
		qcom,spdm-interval = <100>;

		qcom,ports = <11>;
		qcom,alpha-up = <8>;
		qcom,alpha-down = <15>;
		qcom,bucket-size = <8>;

		/*max pl1 freq, max pl2 freq*/
		qcom,pl-freqs = <390000000 410000000>;

		/* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
		qcom,reject-rate = <5000 5000 5000 5000 5000 5000>;
		/* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
		qcom,response-time-us = <5000 5000 5000 5000 3000 3000>;
		/* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
		qcom,cci-response-time-us = <5000 5000 5000 5000 1000 1000>;
		qcom,max-cci-freq = <1090000000>;
	};

	devfreq_spdm_gov {
		compatible = "qcom,gov_spdm_hyp";
		interrupt-names = "spdm-irq";
		interrupts = <0 192 0>;
	};
};
