Merge tag 'icc-7.3-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next

Georgi writes:

This pull request contains the following interconnect updates for
the 7.3-rc1 merge window:

- New driver for Maili SoC
- Add support for QoS on the SC8280XP SoC
- Add support for QoS on the x1e80100 SoC
- Add EPSS L3 scaling support for Shikra SoC
- Add COMPILE_TEST support for some platforms
- Misc tiny improvements and fixes

Signed-off-by: Georgi Djakov <djakov@kernel.org>

* tag 'icc-7.3-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc:
  interconnect: Fix use after free in icc_get() and of_icc_get_by_index()
  interconnect: debugfs-client: add NULL check for platform_device_alloc
  interconnect: qcom: simplify allocation
  interconnect: qcom: add COMPILE_TEST
  interconnect: qcom: add Maili interconnect provider driver
  dt-bindings: interconnect: qcom: document the RPMh Network-On-Chip interconnect in Maili SoC
  interconnect: qcom: Add EPSS L3 scaling support for Shikra SoC
  dt-bindings: interconnect: qcom,osm-l3: Add EPSS L3 DT binding for Qualcomm Shikra SoC
  interconnect: qcom: x1e80100: enable QoS configuration
  dt-bindings: interconnect: qcom,x1e80100-rpmh: add clocks property to enable QoS
  interconnect: qcom: sc8280xp: Enable QoS configuration
  dt-bindings: interconnect: qcom,sc8280xp-rpmh: Add reg and clocks for QoS
This commit is contained in:
Greg Kroah-Hartman
2026-08-19 09:55:37 +02:00
15 changed files with 3443 additions and 16 deletions
@@ -0,0 +1,127 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,maili-rpmh.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm RPMh Network-On-Chip Interconnect on Maili SoC
maintainers:
- Raviteja Laggyshetty <raviteja.laggyshetty@oss.qualcomm.com>
description: |
RPMh interconnect providers support system bandwidth requirements through
RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is
able to communicate with the BCM through the Resource State Coordinator (RSC)
associated with each execution environment. Provider nodes must point to at
least one RPMh device child node pertaining to their RSC and each provider
can map to multiple RPMh resources.
See also: include/dt-bindings/interconnect/qcom,maili-rpmh.h
properties:
compatible:
enum:
- qcom,maili-aggre-noc
- qcom,maili-clk-virt
- qcom,maili-cnoc-main
- qcom,maili-gem-noc
- qcom,maili-llclpi-noc
- qcom,maili-lpass-ag-noc
- qcom,maili-lpass-lpiaon-noc
- qcom,maili-lpass-lpicx-noc
- qcom,maili-mc-virt
- qcom,maili-mmss-noc
- qcom,maili-nsp-noc
- qcom,maili-pcie-anoc
- qcom,maili-stdst-cfg
- qcom,maili-stdst-main
- qcom,maili-system-noc
reg:
maxItems: 1
clocks:
minItems: 2
maxItems: 3
required:
- compatible
allOf:
- $ref: qcom,rpmh-common.yaml#
- if:
properties:
compatible:
contains:
enum:
- qcom,maili-clk-virt
- qcom,maili-mc-virt
then:
properties:
reg: false
else:
required:
- reg
- if:
properties:
compatible:
contains:
enum:
- qcom,maili-aggre-noc
then:
properties:
clocks:
items:
- description: aggre UFS PHY AXI clock
- description: aggre USB3 PRIM AXI clock
- description: RPMH CC IPA clock
- if:
properties:
compatible:
contains:
enum:
- qcom,maili-pcie-anoc
then:
properties:
clocks:
items:
- description: aggre-NOC PCIe AXI clock
- description: cfg-NOC PCIe a-NOC AHB clock
- if:
properties:
compatible:
contains:
enum:
- qcom,maili-aggre-noc
- qcom,maili-pcie-anoc
then:
required:
- clocks
else:
properties:
clocks: false
unevaluatedProperties: false
examples:
- |
gem_noc: interconnect@31100000 {
compatible = "qcom,maili-gem-noc";
reg = <0x31100000 0x160200>;
#interconnect-cells = <2>;
qcom,bcm-voters = <&apps_bcm_voter>;
};
aggre_noc: interconnect@f00000 {
compatible = "qcom,maili-aggre-noc";
reg = <0x00f00000 0x56200>;
#interconnect-cells = <2>;
clocks = <&gcc_phy_axi_clk>,
<&gcc_prim_axi_clk>,
<&rpmhcc_ipa_clk>;
qcom,bcm-voters = <&apps_bcm_voter>;
};
@@ -17,6 +17,8 @@ description:
properties:
compatible:
oneOf:
- enum:
- qcom,shikra-epss-l3
- items:
- enum:
- qcom,sc7180-osm-l3
@@ -32,18 +32,115 @@ properties:
- qcom,sc8280xp-nspb-noc
- qcom,sc8280xp-system-noc
reg:
maxItems: 1
clocks:
minItems: 7
maxItems: 8
required:
- compatible
allOf:
- $ref: qcom,rpmh-common.yaml#
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-clk-virt
- qcom,sc8280xp-mc-virt
then:
properties:
reg: false
clocks: false
else:
required:
- reg
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-aggre1-noc
then:
properties:
clocks:
items:
- description: aggre UFS PHY AXI clock
- description: aggre USB3 PRIM AXI clock
- description: aggre USB3 SEC AXI clock
- description: aggre USB3 MP AXI clock
- description: aggre USB4 AXI clock
- description: aggre USB4 1 AXI clock
- description: aggre USB NOC SOUTH AXI clock
- description: RPMH CC IPA clock
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-aggre2-noc
then:
properties:
clocks:
items:
- description: aggre NOC PCIE0 tunnel AXI clock
- description: aggre NOC PCIE1 tunnel AXI clock
- description: aggre NOC PCIE 4 AXI clock
- description: aggre NOC PCIE SOUTH SF AXI clock
- description: aggre UFS CARD AXI clock
- description: DDRSS GPU AXI clock
- description: DDRSS PCIE SF TBU clock
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-aggre1-noc
- qcom,sc8280xp-aggre2-noc
then:
required:
- clocks
else:
properties:
clocks: false
unevaluatedProperties: false
examples:
- |
interconnect-0 {
compatible = "qcom,sc8280xp-aggre1-noc";
#include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
#include <dt-bindings/clock/qcom,rpmh.h>
interconnect {
compatible = "qcom,sc8280xp-clk-virt";
#interconnect-cells = <2>;
qcom,bcm-voters = <&apps_bcm_voter>;
};
interconnect@9100000 {
compatible = "qcom,sc8280xp-gem-noc";
reg = <0x9100000 0xb8400>;
#interconnect-cells = <2>;
qcom,bcm-voters = <&apps_bcm_voter>;
};
interconnect@16c0000 {
compatible = "qcom,sc8280xp-aggre1-noc";
reg = <0x16c0000 0x3af80>;
#interconnect-cells = <2>;
qcom,bcm-voters = <&apps_bcm_voter>;
clocks = <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
<&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
<&gcc GCC_AGGRE_USB3_SEC_AXI_CLK>,
<&gcc GCC_AGGRE_USB3_MP_AXI_CLK>,
<&gcc GCC_AGGRE_USB4_AXI_CLK>,
<&gcc GCC_AGGRE_USB4_1_AXI_CLK>,
<&gcc GCC_AGGRE_USB_NOC_SOUTH_AXI_CLK>,
<&rpmhcc RPMH_IPA_CLK>;
};
@@ -46,6 +46,10 @@ properties:
reg:
maxItems: 1
clocks:
minItems: 1
maxItems: 6
required:
- compatible
@@ -65,6 +69,73 @@ allOf:
required:
- reg
- if:
properties:
compatible:
contains:
enum:
- qcom,x1e80100-aggre1-noc
then:
properties:
clocks:
items:
- description: aggre UFS PHY AXI clock
- if:
properties:
compatible:
contains:
enum:
- qcom,x1e80100-usb-north-anoc
then:
properties:
clocks:
items:
- description: aggre USB2 PRIM AXI clock
- description: aggre USB3 MP AXI clock
- if:
properties:
compatible:
contains:
enum:
- qcom,x1e80100-usb-south-anoc
then:
properties:
clocks:
items:
- description: aggre USB3 PRIM AXI clock
- description: aggre USB3 SEC AXI clock
- description: aggre USB3 TERT AXI clock
- description: aggre USB4_0 AXI clock
- description: aggre USB4_1 AXI clock
- description: aggre USB4_2 AXI clock
- if:
properties:
compatible:
contains:
enum:
- qcom,x1e80100-aggre2-noc
- qcom,x1e80100-clk-virt
- qcom,x1e80100-cnoc-cfg
- qcom,x1e80100-cnoc-main
- qcom,x1e80100-gem-noc
- qcom,x1e80100-lpass-ag-noc
- qcom,x1e80100-lpass-lpiaon-noc
- qcom,x1e80100-lpass-lpicx-noc
- qcom,x1e80100-mc-virt
- qcom,x1e80100-mmss-noc
- qcom,x1e80100-nsp-noc
- qcom,x1e80100-pcie-center-anoc
- qcom,x1e80100-pcie-north-anoc
- qcom,x1e80100-pcie-south-anoc
- qcom,x1e80100-system-noc
- qcom,x1e80100-usb-center-anoc
then:
properties:
clocks: false
unevaluatedProperties: false
examples:
@@ -80,4 +151,5 @@ examples:
reg = <0x016e0000 0x14400>;
#interconnect-cells = <2>;
qcom,bcm-voters = <&apps_bcm_voter>;
clocks = <&gcc_aggre_ufs_phy_axi_clk>;
};
+4 -3
View File
@@ -548,7 +548,7 @@ struct icc_path *of_icc_get_by_index(struct device *dev, int idx)
path->name = kasprintf(GFP_KERNEL, "%s-%s",
src_data->node->name, dst_data->node->name);
if (!path->name) {
kfree(path);
icc_put(path);
path = ERR_PTR(-ENOMEM);
}
@@ -646,8 +646,9 @@ struct icc_path *icc_get(struct device *dev, const char *src, const char *dst)
path->name = kasprintf(GFP_KERNEL, "%s-%s", src_node->name, dst_node->name);
if (!path->name) {
kfree(path);
path = ERR_PTR(-ENOMEM);
mutex_unlock(&icc_lock);
icc_put(path);
return ERR_PTR(-ENOMEM);
}
out:
mutex_unlock(&icc_lock);
+2
View File
@@ -142,6 +142,8 @@ int icc_debugfs_client_init(struct dentry *icc_dir)
int ret;
pdev = platform_device_alloc("icc-debugfs-client", PLATFORM_DEVID_NONE);
if (!pdev)
return -ENOMEM;
ret = platform_device_add(pdev);
if (ret) {
+11 -1
View File
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
config INTERCONNECT_QCOM
tristate "Qualcomm Network-on-Chip interconnect drivers"
depends on ARCH_QCOM
depends on ARCH_QCOM || COMPILE_TEST
help
Support for Qualcomm's Network-on-Chip interconnect hardware.
@@ -47,6 +47,16 @@ config INTERCONNECT_QCOM_KAANAPALI
This is a driver for the Qualcomm Network-on-Chip on kaanapali-based
platforms.
config INTERCONNECT_QCOM_MAILI
tristate "Qualcomm MAILI interconnect driver"
depends on INTERCONNECT_QCOM_RPMH_POSSIBLE
select INTERCONNECT_QCOM_RPMH
select INTERCONNECT_QCOM_BCM_VOTER
default ARCH_QCOM
help
This is a driver for the Qualcomm Network-on-Chip on maili-based
platforms.
config INTERCONNECT_QCOM_MSM8909
tristate "Qualcomm MSM8909 interconnect driver"
depends on INTERCONNECT_QCOM
+2
View File
@@ -8,6 +8,7 @@ qnoc-eliza-objs := eliza.o
qnoc-glymur-objs := glymur.o
qnoc-hawi-objs := hawi.o
qnoc-kaanapali-objs := kaanapali.o
qnoc-maili-objs := maili.o
qnoc-milos-objs := milos.o
qnoc-msm8909-objs := msm8909.o
qnoc-msm8916-objs := msm8916.o
@@ -56,6 +57,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM_ELIZA) += qnoc-eliza.o
obj-$(CONFIG_INTERCONNECT_QCOM_GLYMUR) += qnoc-glymur.o
obj-$(CONFIG_INTERCONNECT_QCOM_HAWI) += qnoc-hawi.o
obj-$(CONFIG_INTERCONNECT_QCOM_KAANAPALI) += qnoc-kaanapali.o
obj-$(CONFIG_INTERCONNECT_QCOM_MAILI) += qnoc-maili.o
obj-$(CONFIG_INTERCONNECT_QCOM_MILOS) += qnoc-milos.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8909) += qnoc-msm8909.o
obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) += qnoc-msm8916.o
+2 -5
View File
@@ -479,13 +479,11 @@ int qnoc_probe(struct platform_device *pdev)
cd_num = 0;
}
qp = devm_kzalloc(dev, sizeof(*qp), GFP_KERNEL);
qp = devm_kzalloc(dev, struct_size(qp, intf_clks, cd_num), GFP_KERNEL);
if (!qp)
return -ENOMEM;
qp->intf_clks = devm_kcalloc(dev, cd_num, sizeof(*qp->intf_clks), GFP_KERNEL);
if (!qp->intf_clks)
return -ENOMEM;
qp->num_intf_clks = cd_num;
if (desc->bus_clk_desc) {
qp->bus_clk_desc = devm_kzalloc(dev, sizeof(*qp->bus_clk_desc),
@@ -507,7 +505,6 @@ int qnoc_probe(struct platform_device *pdev)
return -ENOMEM;
data->num_nodes = num_nodes;
qp->num_intf_clks = cd_num;
for (i = 0; i < cd_num; i++)
qp->intf_clks[i].id = cds[i];
+4 -4
View File
@@ -40,7 +40,6 @@ struct rpm_clk_resource {
/**
* struct qcom_icc_provider - Qualcomm specific interconnect provider
* @provider: generic interconnect provider
* @num_intf_clks: the total number of intf_clks clk_bulk_data entries
* @type: the ICC provider type
* @regmap: regmap for QoS registers read/write access
* @qos_offset: offset to QoS registers
@@ -49,13 +48,13 @@ struct rpm_clk_resource {
* @bus_clk_rate: bus clock rate in Hz
* @bus_clk_desc: a pointer to a rpm_clk_resource description of bus clocks
* @bus_clk: a pointer to a HLOS-owned bus clock
* @intf_clks: a clk_bulk_data array of interface clocks
* @keep_alive: whether to always keep a minimum vote on the bus clocks
* @ignore_enxio: whether to ignore ENXIO errors (for MSM8974)
* @num_intf_clks: the total number of intf_clks clk_bulk_data entries
* @intf_clks: a clk_bulk_data array of interface clocks
*/
struct qcom_icc_provider {
struct icc_provider provider;
int num_intf_clks;
enum qcom_icc_type type;
struct regmap *regmap;
unsigned int qos_offset;
@@ -64,9 +63,10 @@ struct qcom_icc_provider {
u32 bus_clk_rate[QCOM_SMD_RPM_STATE_NUM];
const struct rpm_clk_resource *bus_clk_desc;
struct clk *bus_clk;
struct clk_bulk_data *intf_clks;
bool keep_alive;
bool ignore_enxio;
int num_intf_clks;
struct clk_bulk_data intf_clks[] __counted_by(num_intf_clks);
};
/**
File diff suppressed because it is too large Load Diff
+15 -1
View File
@@ -60,6 +60,7 @@ struct qcom_osm_l3_desc {
unsigned int lut_row_size;
unsigned int reg_freq_lut;
unsigned int reg_perf_state;
unsigned int lut_max_entries;
};
#define DEFINE_QNODE(_name, _buswidth) \
@@ -90,6 +91,7 @@ static const struct qcom_osm_l3_desc osm_l3 = {
.lut_row_size = OSM_LUT_ROW_SIZE,
.reg_freq_lut = OSM_REG_FREQ_LUT,
.reg_perf_state = OSM_REG_PERF_STATE,
.lut_max_entries = LUT_MAX_ENTRIES,
};
static const struct qcom_osm_l3_desc epss_l3_perf_state = {
@@ -98,6 +100,16 @@ static const struct qcom_osm_l3_desc epss_l3_perf_state = {
.lut_row_size = EPSS_LUT_ROW_SIZE,
.reg_freq_lut = EPSS_REG_FREQ_LUT,
.reg_perf_state = EPSS_REG_PERF_STATE,
.lut_max_entries = LUT_MAX_ENTRIES,
};
static const struct qcom_osm_l3_desc shikra_epss_l3_perf_state = {
.nodes = epss_l3_nodes,
.num_nodes = ARRAY_SIZE(epss_l3_nodes),
.lut_row_size = EPSS_LUT_ROW_SIZE,
.reg_freq_lut = EPSS_REG_FREQ_LUT,
.reg_perf_state = EPSS_REG_PERF_STATE,
.lut_max_entries = 12,
};
static const struct qcom_osm_l3_desc epss_l3_l3_vote = {
@@ -106,6 +118,7 @@ static const struct qcom_osm_l3_desc epss_l3_l3_vote = {
.lut_row_size = EPSS_LUT_ROW_SIZE,
.reg_freq_lut = EPSS_REG_FREQ_LUT,
.reg_perf_state = EPSS_REG_L3_VOTE,
.lut_max_entries = LUT_MAX_ENTRIES,
};
static int qcom_osm_l3_set(struct icc_node *src, struct icc_node *dst)
@@ -189,7 +202,7 @@ static int qcom_osm_l3_probe(struct platform_device *pdev)
qp->reg_perf_state = desc->reg_perf_state;
for (i = 0; i < LUT_MAX_ENTRIES; i++) {
for (i = 0; i < desc->lut_max_entries; i++) {
info = readl_relaxed(qp->base + desc->reg_freq_lut +
i * desc->lut_row_size);
src = FIELD_GET(LUT_SRC, info);
@@ -272,6 +285,7 @@ static const struct of_device_id osm_l3_of_match[] = {
{ .compatible = "qcom,sc7180-osm-l3", .data = &osm_l3 },
{ .compatible = "qcom,sc7280-epss-l3", .data = &epss_l3_perf_state },
{ .compatible = "qcom,sdm845-osm-l3", .data = &osm_l3 },
{ .compatible = "qcom,shikra-epss-l3", .data = &shikra_epss_l3_perf_state },
{ .compatible = "qcom,sm8150-osm-l3", .data = &osm_l3 },
{ .compatible = "qcom,sc8180x-osm-l3", .data = &osm_l3 },
{ .compatible = "qcom,sm8250-epss-l3", .data = &epss_l3_perf_state },
+356
View File
@@ -215,6 +215,11 @@ static struct qcom_icc_node qhm_qspi = {
.name = "qhm_qspi",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x5000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -223,6 +228,11 @@ static struct qcom_icc_node qhm_qup1 = {
.name = "qhm_qup1",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x6000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -231,6 +241,11 @@ static struct qcom_icc_node qhm_qup2 = {
.name = "qhm_qup2",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xc000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -247,6 +262,12 @@ static struct qcom_icc_node qxm_ipa = {
.name = "qxm_ipa",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x8000 },
.prio = 2,
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -255,6 +276,11 @@ static struct qcom_icc_node xm_emac_1 = {
.name = "xm_emac_1",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xd000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -263,6 +289,11 @@ static struct qcom_icc_node xm_sdc4 = {
.name = "xm_sdc4",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x7000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -271,6 +302,11 @@ static struct qcom_icc_node xm_ufs_mem = {
.name = "xm_ufs_mem",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x9000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -279,6 +315,11 @@ static struct qcom_icc_node xm_usb3_0 = {
.name = "xm_usb3_0",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xb000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_snoc },
};
@@ -287,6 +328,11 @@ static struct qcom_icc_node xm_usb3_1 = {
.name = "xm_usb3_1",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_snoc },
};
@@ -295,6 +341,11 @@ static struct qcom_icc_node xm_usb3_mp = {
.name = "xm_usb3_mp",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xe000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_snoc },
};
@@ -303,6 +354,11 @@ static struct qcom_icc_node xm_usb4_host0 = {
.name = "xm_usb4_host0",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xf000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_snoc },
};
@@ -311,6 +367,11 @@ static struct qcom_icc_node xm_usb4_host1 = {
.name = "xm_usb4_host1",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x10000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_snoc },
};
@@ -319,6 +380,11 @@ static struct qcom_icc_node qhm_qdss_bam = {
.name = "qhm_qdss_bam",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -327,6 +393,11 @@ static struct qcom_icc_node qhm_qup0 = {
.name = "qhm_qup0",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xb000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -343,6 +414,12 @@ static struct qcom_icc_node qxm_crypto = {
.name = "qxm_crypto",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xe000 },
.prio = 2,
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -367,6 +444,11 @@ static struct qcom_icc_node xm_emac_0 = {
.name = "xm_emac_0",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x11000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -375,6 +457,11 @@ static struct qcom_icc_node xm_pcie3_0 = {
.name = "xm_pcie3_0",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x12000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -383,6 +470,11 @@ static struct qcom_icc_node xm_pcie3_1 = {
.name = "xm_pcie3_1",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xf000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -391,6 +483,11 @@ static struct qcom_icc_node xm_pcie3_2a = {
.name = "xm_pcie3_2a",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x13000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -399,6 +496,11 @@ static struct qcom_icc_node xm_pcie3_2b = {
.name = "xm_pcie3_2b",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x14000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -407,6 +509,11 @@ static struct qcom_icc_node xm_pcie3_3a = {
.name = "xm_pcie3_3a",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x15000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -415,6 +522,11 @@ static struct qcom_icc_node xm_pcie3_3b = {
.name = "xm_pcie3_3b",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x16000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -423,6 +535,11 @@ static struct qcom_icc_node xm_pcie3_4 = {
.name = "xm_pcie3_4",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x10000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_pcie_gem_noc },
};
@@ -431,6 +548,11 @@ static struct qcom_icc_node xm_qdss_etr = {
.name = "xm_qdss_etr",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x7000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -439,6 +561,11 @@ static struct qcom_icc_node xm_sdc2 = {
.name = "xm_sdc2",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x8000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -447,6 +574,11 @@ static struct qcom_icc_node xm_ufs_card = {
.name = "xm_ufs_card",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x9000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -586,6 +718,11 @@ static struct qcom_icc_node alm_gpu_tcu = {
.name = "alm_gpu_tcu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa0000 },
.prio = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -595,6 +732,11 @@ static struct qcom_icc_node alm_pcie_tcu = {
.name = "alm_pcie_tcu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa1000 },
.prio = 3,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -604,6 +746,11 @@ static struct qcom_icc_node alm_sys_tcu = {
.name = "alm_sys_tcu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa2000 },
.prio = 6,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -623,6 +770,11 @@ static struct qcom_icc_node qnm_cmpnoc0 = {
.name = "qnm_cmpnoc0",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x1b000, 0x66000 },
.urg_fwd = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -632,6 +784,11 @@ static struct qcom_icc_node qnm_cmpnoc1 = {
.name = "qnm_cmpnoc1",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x24000, 0x6f000 },
.urg_fwd = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -651,6 +808,11 @@ static struct qcom_icc_node qnm_gpu = {
.name = "qnm_gpu",
.channels = 4,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 4,
.port_offsets = { 0x1c000, 0x1d000, 0x67000, 0x68000 },
.urg_fwd = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -660,6 +822,11 @@ static struct qcom_icc_node qnm_mnoc_hf = {
.name = "qnm_mnoc_hf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x1e000, 0x69000 },
.urg_fwd = 1,
},
.num_links = 2,
.link_nodes = { &qns_llcc,
&qns_pcie },
@@ -669,6 +836,11 @@ static struct qcom_icc_node qnm_mnoc_sf = {
.name = "qnm_mnoc_sf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x1f000, 0x6a000 },
.urg_fwd = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -678,6 +850,12 @@ static struct qcom_icc_node qnm_pcie = {
.name = "qnm_pcie",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa3000 },
.prio = 2,
.urg_fwd = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc },
@@ -687,6 +865,11 @@ static struct qcom_icc_node qnm_snoc_gc = {
.name = "qnm_snoc_gc",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa4000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_llcc },
};
@@ -695,6 +878,11 @@ static struct qcom_icc_node qnm_snoc_sf = {
.name = "qnm_snoc_sf",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa5000 },
.urg_fwd = 1,
},
.num_links = 3,
.link_nodes = { &qns_gem_noc_cnoc,
&qns_llcc,
@@ -737,6 +925,11 @@ static struct qcom_icc_node qnm_camnoc_hf = {
.name = "qnm_camnoc_hf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x10000, 0x10180 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -745,6 +938,11 @@ static struct qcom_icc_node qnm_mdp0_0 = {
.name = "qnm_mdp0_0",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x16000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -753,6 +951,11 @@ static struct qcom_icc_node qnm_mdp0_1 = {
.name = "qnm_mdp0_1",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x16080 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -761,6 +964,11 @@ static struct qcom_icc_node qnm_mdp1_0 = {
.name = "qnm_mdp1_0",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xf000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -769,6 +977,11 @@ static struct qcom_icc_node qnm_mdp1_1 = {
.name = "qnm_mdp1_1",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xf800 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -785,6 +998,11 @@ static struct qcom_icc_node qnm_rot_0 = {
.name = "qnm_rot_0",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x17000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -793,6 +1011,11 @@ static struct qcom_icc_node qnm_rot_1 = {
.name = "qnm_rot_1",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xe000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -801,6 +1024,11 @@ static struct qcom_icc_node qnm_video0 = {
.name = "qnm_video0",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x14000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -809,6 +1037,11 @@ static struct qcom_icc_node qnm_video1 = {
.name = "qnm_video1",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x14080 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -817,6 +1050,11 @@ static struct qcom_icc_node qnm_video_cvp = {
.name = "qnm_video_cvp",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x15000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -825,6 +1063,11 @@ static struct qcom_icc_node qxm_camnoc_icp = {
.name = "qxm_camnoc_icp",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x11000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -833,6 +1076,11 @@ static struct qcom_icc_node qxm_camnoc_sf = {
.name = "qxm_camnoc_sf",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x12000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -899,6 +1147,11 @@ static struct qcom_icc_node qnm_lpass_noc = {
.name = "qnm_lpass_noc",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xe000 },
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_gemnoc_sf },
};
@@ -915,6 +1168,12 @@ static struct qcom_icc_node qxm_pimem = {
.name = "qxm_pimem",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x10000 },
.prio = 2,
.urg_fwd = 1,
},
.num_links = 1,
.link_nodes = { &qns_gemnoc_gc },
};
@@ -923,6 +1182,11 @@ static struct qcom_icc_node xm_gic = {
.name = "xm_gic",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x12000 },
.prio = 2,
},
.num_links = 1,
.link_nodes = { &qns_gemnoc_gc },
};
@@ -1996,11 +2260,21 @@ static struct qcom_icc_node * const aggre1_noc_nodes[] = {
[SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc,
};
static const struct regmap_config sc8280xp_aggre1_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x3af80,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_aggre1_noc = {
.config = &sc8280xp_aggre1_noc_regmap_config,
.nodes = aggre1_noc_nodes,
.num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
.bcms = aggre1_noc_bcms,
.num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
.qos_requires_clocks = true,
};
static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
@@ -2032,11 +2306,21 @@ static struct qcom_icc_node * const aggre2_noc_nodes[] = {
[SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc,
};
static const struct regmap_config sc8280xp_aggre2_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x3af80,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_aggre2_noc = {
.config = &sc8280xp_aggre2_noc_regmap_config,
.nodes = aggre2_noc_nodes,
.num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
.bcms = aggre2_noc_bcms,
.num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
.qos_requires_clocks = true,
};
static struct qcom_icc_bcm * const clk_virt_bcms[] = {
@@ -2158,7 +2442,16 @@ static struct qcom_icc_node * const config_noc_nodes[] = {
[SLAVE_TCU] = &xs_sys_tcu_cfg,
};
static const struct regmap_config sc8280xp_config_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x2c000,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_config_noc = {
.config = &sc8280xp_config_noc_regmap_config,
.nodes = config_noc_nodes,
.num_nodes = ARRAY_SIZE(config_noc_nodes),
.bcms = config_noc_bcms,
@@ -2174,7 +2467,16 @@ static struct qcom_icc_node * const dc_noc_nodes[] = {
[SLAVE_GEM_NOC_CFG] = &qns_gemnoc,
};
static const struct regmap_config sc8280xp_dc_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x5080,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_dc_noc = {
.config = &sc8280xp_dc_noc_regmap_config,
.nodes = dc_noc_nodes,
.num_nodes = ARRAY_SIZE(dc_noc_nodes),
.bcms = dc_noc_bcms,
@@ -2208,7 +2510,16 @@ static struct qcom_icc_node * const gem_noc_nodes[] = {
[SLAVE_SERVICE_GEM_NOC] = &srvc_sys_gemnoc,
};
static const struct regmap_config sc8280xp_gem_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0xb8400,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_gem_noc = {
.config = &sc8280xp_gem_noc_regmap_config,
.nodes = gem_noc_nodes,
.num_nodes = ARRAY_SIZE(gem_noc_nodes),
.bcms = gem_noc_bcms,
@@ -2231,7 +2542,16 @@ static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
[SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
};
static const struct regmap_config sc8280xp_lpass_ag_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0xf080,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_lpass_ag_noc = {
.config = &sc8280xp_lpass_ag_noc_regmap_config,
.nodes = lpass_ag_noc_nodes,
.num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
.bcms = lpass_ag_noc_bcms,
@@ -2279,7 +2599,16 @@ static struct qcom_icc_node * const mmss_noc_nodes[] = {
[SLAVE_SERVICE_MNOC] = &srvc_mnoc,
};
static const struct regmap_config sc8280xp_mmss_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x1fa80,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_mmss_noc = {
.config = &sc8280xp_mmss_noc_regmap_config,
.nodes = mmss_noc_nodes,
.num_nodes = ARRAY_SIZE(mmss_noc_nodes),
.bcms = mmss_noc_bcms,
@@ -2299,7 +2628,16 @@ static struct qcom_icc_node * const nspa_noc_nodes[] = {
[SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
};
static const struct regmap_config sc8280xp_nspa_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x10000,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_nspa_noc = {
.config = &sc8280xp_nspa_noc_regmap_config,
.nodes = nspa_noc_nodes,
.num_nodes = ARRAY_SIZE(nspa_noc_nodes),
.bcms = nspa_noc_bcms,
@@ -2319,7 +2657,16 @@ static struct qcom_icc_node * const nspb_noc_nodes[] = {
[SLAVE_SERVICE_NSPB_NOC] = &service_nspb_noc,
};
static const struct regmap_config sc8280xp_nspb_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x10000,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_nspb_noc = {
.config = &sc8280xp_nspb_noc_regmap_config,
.nodes = nspb_noc_nodes,
.num_nodes = ARRAY_SIZE(nspb_noc_nodes),
.bcms = nspb_noc_bcms,
@@ -2348,7 +2695,16 @@ static struct qcom_icc_node * const system_noc_main_nodes[] = {
[SLAVE_SERVICE_SNOC] = &srvc_snoc,
};
static const struct regmap_config sc8280xp_system_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x1a400,
.fast_io = true,
};
static const struct qcom_icc_desc sc8280xp_system_noc_main = {
.config = &sc8280xp_system_noc_regmap_config,
.nodes = system_noc_main_nodes,
.num_nodes = ARRAY_SIZE(system_noc_main_nodes),
.bcms = system_noc_main_bcms,
+485
View File
@@ -173,6 +173,13 @@ static struct qcom_icc_node qhm_qspi = {
.name = "qhm_qspi",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xb000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -181,6 +188,13 @@ static struct qcom_icc_node qhm_qup1 = {
.name = "qhm_qup1",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xc000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -189,6 +203,13 @@ static struct qcom_icc_node xm_sdc4 = {
.name = "xm_sdc4",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xd000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -197,6 +218,13 @@ static struct qcom_icc_node xm_ufs_mem = {
.name = "xm_ufs_mem",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xe000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a1noc_snoc },
};
@@ -205,6 +233,13 @@ static struct qcom_icc_node qhm_qup0 = {
.name = "qhm_qup0",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x16000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -213,6 +248,13 @@ static struct qcom_icc_node qhm_qup2 = {
.name = "qhm_qup2",
.channels = 1,
.buswidth = 4,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x11000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -221,6 +263,13 @@ static struct qcom_icc_node qxm_crypto = {
.name = "qxm_crypto",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x12000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -237,6 +286,13 @@ static struct qcom_icc_node xm_qdss_etr_0 = {
.name = "xm_qdss_etr_0",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x13000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -245,6 +301,13 @@ static struct qcom_icc_node xm_qdss_etr_1 = {
.name = "xm_qdss_etr_1",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x14000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -253,6 +316,13 @@ static struct qcom_icc_node xm_sdc2 = {
.name = "xm_sdc2",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x15000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_a2noc_snoc },
};
@@ -337,6 +407,13 @@ static struct qcom_icc_node alm_gpu_tcu = {
.name = "alm_gpu_tcu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x271000 },
.prio = 1,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -345,6 +422,13 @@ static struct qcom_icc_node alm_pcie_tcu = {
.name = "alm_pcie_tcu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x27d000 },
.prio = 3,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -353,6 +437,13 @@ static struct qcom_icc_node alm_sys_tcu = {
.name = "alm_sys_tcu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x273000 },
.prio = 6,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -370,6 +461,13 @@ static struct qcom_icc_node qnm_gpu = {
.name = "qnm_gpu",
.channels = 4,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 4,
.port_offsets = { 0x51000, 0x58000, 0xd1000, 0xd8000 },
.prio = 0,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -378,6 +476,13 @@ static struct qcom_icc_node qnm_lpass = {
.name = "qnm_lpass",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x275000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 3,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc,
&qns_pcie },
@@ -387,6 +492,13 @@ static struct qcom_icc_node qnm_mnoc_hf = {
.name = "qnm_mnoc_hf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x53000, 0xd3000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -395,6 +507,13 @@ static struct qcom_icc_node qnm_mnoc_sf = {
.name = "qnm_mnoc_sf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x55000, 0xd5000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -403,6 +522,13 @@ static struct qcom_icc_node qnm_nsp_noc = {
.name = "qnm_nsp_noc",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x57000, 0xd7000 },
.prio = 0,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 3,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc,
&qns_pcie },
@@ -412,6 +538,13 @@ static struct qcom_icc_node qnm_pcie = {
.name = "qnm_pcie",
.channels = 1,
.buswidth = 64,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x277000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 2,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
};
@@ -420,6 +553,13 @@ static struct qcom_icc_node qnm_snoc_sf = {
.name = "qnm_snoc_sf",
.channels = 1,
.buswidth = 64,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x27b000 },
.prio = 2,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 3,
.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc,
&qns_pcie },
@@ -429,6 +569,13 @@ static struct qcom_icc_node xm_gic = {
.name = "xm_gic",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x27f000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_llcc },
};
@@ -469,6 +616,13 @@ static struct qcom_icc_node qnm_av1_enc = {
.name = "qnm_av1_enc",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x2f000 },
.prio = 4,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -477,6 +631,13 @@ static struct qcom_icc_node qnm_camnoc_hf = {
.name = "qnm_camnoc_hf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x28000, 0x29000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -485,6 +646,13 @@ static struct qcom_icc_node qnm_camnoc_icp = {
.name = "qnm_camnoc_icp",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x2a000 },
.prio = 4,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -493,6 +661,13 @@ static struct qcom_icc_node qnm_camnoc_sf = {
.name = "qnm_camnoc_sf",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x2b000, 0x2c000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -501,6 +676,13 @@ static struct qcom_icc_node qnm_eva = {
.name = "qnm_eva",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x33000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -509,6 +691,13 @@ static struct qcom_icc_node qnm_mdp = {
.name = "qnm_mdp",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x2d000, 0x2e000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_hf },
};
@@ -517,6 +706,13 @@ static struct qcom_icc_node qnm_video = {
.name = "qnm_video",
.channels = 2,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 2,
.port_offsets = { 0x30000, 0x31000 },
.prio = 0,
.urg_fwd = 1,
.prio_fwd_disable = 0,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -525,6 +721,13 @@ static struct qcom_icc_node qnm_video_cv_cpu = {
.name = "qnm_video_cv_cpu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x32000 },
.prio = 4,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -533,6 +736,13 @@ static struct qcom_icc_node qnm_video_v_cpu = {
.name = "qnm_video_v_cpu",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x34000 },
.prio = 4,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_mem_noc_sf },
};
@@ -573,6 +783,13 @@ static struct qcom_icc_node xm_pcie_3 = {
.name = "xm_pcie_3",
.channels = 1,
.buswidth = 64,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x7000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_north_gem_noc },
};
@@ -581,6 +798,13 @@ static struct qcom_icc_node xm_pcie_4 = {
.name = "xm_pcie_4",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x8000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_north_gem_noc },
};
@@ -589,6 +813,13 @@ static struct qcom_icc_node xm_pcie_5 = {
.name = "xm_pcie_5",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x9000 },
.prio = 3,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_north_gem_noc },
};
@@ -597,6 +828,13 @@ static struct qcom_icc_node xm_pcie_0 = {
.name = "xm_pcie_0",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x9000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_south_gem_noc },
};
@@ -605,6 +843,13 @@ static struct qcom_icc_node xm_pcie_1 = {
.name = "xm_pcie_1",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_south_gem_noc },
};
@@ -613,6 +858,13 @@ static struct qcom_icc_node xm_pcie_2 = {
.name = "xm_pcie_2",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xb000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_south_gem_noc },
};
@@ -621,6 +873,13 @@ static struct qcom_icc_node xm_pcie_6a = {
.name = "xm_pcie_6a",
.channels = 1,
.buswidth = 32,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xc000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_south_gem_noc },
};
@@ -629,6 +888,13 @@ static struct qcom_icc_node xm_pcie_6b = {
.name = "xm_pcie_6b",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xd000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_pcie_south_gem_noc },
};
@@ -653,6 +919,13 @@ static struct qcom_icc_node qnm_gic = {
.name = "qnm_gic",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x1c000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_gemnoc_sf },
};
@@ -685,6 +958,13 @@ static struct qcom_icc_node xm_usb2_0 = {
.name = "xm_usb2_0",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x6000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_north_snoc },
};
@@ -693,6 +973,13 @@ static struct qcom_icc_node xm_usb3_mp = {
.name = "xm_usb3_mp",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0x7000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_north_snoc },
};
@@ -701,6 +988,13 @@ static struct qcom_icc_node xm_usb3_0 = {
.name = "xm_usb3_0",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xa000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_south_snoc },
};
@@ -709,6 +1003,13 @@ static struct qcom_icc_node xm_usb3_1 = {
.name = "xm_usb3_1",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xb000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_south_snoc },
};
@@ -717,6 +1018,13 @@ static struct qcom_icc_node xm_usb3_2 = {
.name = "xm_usb3_2",
.channels = 1,
.buswidth = 8,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xc000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_south_snoc },
};
@@ -725,6 +1033,13 @@ static struct qcom_icc_node xm_usb4_0 = {
.name = "xm_usb4_0",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xd000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_south_snoc },
};
@@ -733,6 +1048,13 @@ static struct qcom_icc_node xm_usb4_1 = {
.name = "xm_usb4_1",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xe000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_south_snoc },
};
@@ -741,6 +1063,13 @@ static struct qcom_icc_node xm_usb4_2 = {
.name = "xm_usb4_2",
.channels = 1,
.buswidth = 16,
.qosbox = &(const struct qcom_icc_qosbox) {
.num_ports = 1,
.port_offsets = { 0xf000 },
.prio = 2,
.urg_fwd = 0,
.prio_fwd_disable = 1,
},
.num_links = 1,
.link_nodes = { &qns_aggre_usb_south_snoc },
};
@@ -1466,11 +1795,21 @@ static struct qcom_icc_node * const aggre1_noc_nodes[] = {
[SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
};
static const struct regmap_config x1e80100_aggre1_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x14400,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_aggre1_noc = {
.config = &x1e80100_aggre1_noc_regmap_config,
.nodes = aggre1_noc_nodes,
.num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
.bcms = aggre1_noc_bcms,
.num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
.qos_requires_clocks = true,
};
static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
@@ -1488,7 +1827,16 @@ static struct qcom_icc_node * const aggre2_noc_nodes[] = {
[SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
};
static const struct regmap_config x1e80100_aggre2_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x1c400,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_aggre2_noc = {
.config = &x1e80100_aggre2_noc_regmap_config,
.nodes = aggre2_noc_nodes,
.num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
.bcms = aggre2_noc_bcms,
@@ -1573,7 +1921,16 @@ static struct qcom_icc_node * const cnoc_cfg_nodes[] = {
[SLAVE_TCU] = &xs_sys_tcu_cfg,
};
static const struct regmap_config x1e80100_cnoc_cfg_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x6600,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_cnoc_cfg = {
.config = &x1e80100_cnoc_cfg_regmap_config,
.nodes = cnoc_cfg_nodes,
.num_nodes = ARRAY_SIZE(cnoc_cfg_nodes),
.bcms = cnoc_cfg_bcms,
@@ -1603,7 +1960,16 @@ static struct qcom_icc_node * const cnoc_main_nodes[] = {
[SLAVE_PCIE_6B] = &xs_pcie_6b,
};
static const struct regmap_config x1e80100_cnoc_main_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x14400,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_cnoc_main = {
.config = &x1e80100_cnoc_main_regmap_config,
.nodes = cnoc_main_nodes,
.num_nodes = ARRAY_SIZE(cnoc_main_nodes),
.bcms = cnoc_main_bcms,
@@ -1633,7 +1999,16 @@ static struct qcom_icc_node * const gem_noc_nodes[] = {
[SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie,
};
static const struct regmap_config x1e80100_gem_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x311200,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_gem_noc = {
.config = &x1e80100_gem_noc_regmap_config,
.nodes = gem_noc_nodes,
.num_nodes = ARRAY_SIZE(gem_noc_nodes),
.bcms = gem_noc_bcms,
@@ -1648,7 +2023,16 @@ static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
[SLAVE_LPASS_GEM_NOC] = &qns_lpass_ag_noc_gemnoc,
};
static const struct regmap_config x1e80100_lpass_ag_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0xe080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_lpass_ag_noc = {
.config = &x1e80100_lpass_ag_noc_regmap_config,
.nodes = lpass_ag_noc_nodes,
.num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
.bcms = lpass_ag_noc_bcms,
@@ -1664,7 +2048,16 @@ static struct qcom_icc_node * const lpass_lpiaon_noc_nodes[] = {
[SLAVE_LPIAON_NOC_LPASS_AG_NOC] = &qns_lpass_aggnoc,
};
static const struct regmap_config x1e80100_lpass_lpiaon_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x19080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_lpass_lpiaon_noc = {
.config = &x1e80100_lpass_lpiaon_noc_regmap_config,
.nodes = lpass_lpiaon_noc_nodes,
.num_nodes = ARRAY_SIZE(lpass_lpiaon_noc_nodes),
.bcms = lpass_lpiaon_noc_bcms,
@@ -1679,7 +2072,16 @@ static struct qcom_icc_node * const lpass_lpicx_noc_nodes[] = {
[SLAVE_LPICX_NOC_LPIAON_NOC] = &qns_lpi_aon_noc,
};
static const struct regmap_config x1e80100_lpass_lpicx_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x3a200,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_lpass_lpicx_noc = {
.config = &x1e80100_lpass_lpicx_noc_regmap_config,
.nodes = lpass_lpicx_noc_nodes,
.num_nodes = ARRAY_SIZE(lpass_lpicx_noc_nodes),
.bcms = lpass_lpicx_noc_bcms,
@@ -1724,7 +2126,16 @@ static struct qcom_icc_node * const mmss_noc_nodes[] = {
[SLAVE_SERVICE_MNOC] = &srvc_mnoc,
};
static const struct regmap_config x1e80100_mmss_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x5b800,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_mmss_noc = {
.config = &x1e80100_mmss_noc_regmap_config,
.nodes = mmss_noc_nodes,
.num_nodes = ARRAY_SIZE(mmss_noc_nodes),
.bcms = mmss_noc_bcms,
@@ -1740,7 +2151,16 @@ static struct qcom_icc_node * const nsp_noc_nodes[] = {
[SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
};
static const struct regmap_config x1e80100_nsp_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0xe080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_nsp_noc = {
.config = &x1e80100_nsp_noc_regmap_config,
.nodes = nsp_noc_nodes,
.num_nodes = ARRAY_SIZE(nsp_noc_nodes),
.bcms = nsp_noc_bcms,
@@ -1757,7 +2177,16 @@ static struct qcom_icc_node * const pcie_center_anoc_nodes[] = {
[SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc,
};
static const struct regmap_config x1e80100_pcie_center_anoc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x7000,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_pcie_center_anoc = {
.config = &x1e80100_pcie_center_anoc_regmap_config,
.nodes = pcie_center_anoc_nodes,
.num_nodes = ARRAY_SIZE(pcie_center_anoc_nodes),
.bcms = pcie_center_anoc_bcms,
@@ -1774,7 +2203,16 @@ static struct qcom_icc_node * const pcie_north_anoc_nodes[] = {
[SLAVE_PCIE_NORTH] = &qns_pcie_north_gem_noc,
};
static const struct regmap_config x1e80100_pcie_north_anoc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x9080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_pcie_north_anoc = {
.config = &x1e80100_pcie_north_anoc_regmap_config,
.nodes = pcie_north_anoc_nodes,
.num_nodes = ARRAY_SIZE(pcie_north_anoc_nodes),
.bcms = pcie_north_anoc_bcms,
@@ -1793,7 +2231,16 @@ static struct qcom_icc_node * const pcie_south_anoc_nodes[] = {
[SLAVE_PCIE_SOUTH] = &qns_pcie_south_gem_noc,
};
static const struct regmap_config x1e80100_pcie_south_anoc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0xd080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_pcie_south_anoc = {
.config = &x1e80100_pcie_south_anoc_regmap_config,
.nodes = pcie_south_anoc_nodes,
.num_nodes = ARRAY_SIZE(pcie_south_anoc_nodes),
.bcms = pcie_south_anoc_bcms,
@@ -1815,7 +2262,16 @@ static struct qcom_icc_node * const system_noc_nodes[] = {
[SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
};
static const struct regmap_config x1e80100_system_noc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x1c080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_system_noc = {
.config = &x1e80100_system_noc_regmap_config,
.nodes = system_noc_nodes,
.num_nodes = ARRAY_SIZE(system_noc_nodes),
.bcms = system_noc_bcms,
@@ -1831,7 +2287,16 @@ static struct qcom_icc_node * const usb_center_anoc_nodes[] = {
[SLAVE_USB_NOC_SNOC] = &qns_aggre_usb_snoc,
};
static const struct regmap_config x1e80100_usb_center_anoc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x8800,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_usb_center_anoc = {
.config = &x1e80100_usb_center_anoc_regmap_config,
.nodes = usb_center_anoc_nodes,
.num_nodes = ARRAY_SIZE(usb_center_anoc_nodes),
.bcms = usb_center_anoc_bcms,
@@ -1847,11 +2312,21 @@ static struct qcom_icc_node * const usb_north_anoc_nodes[] = {
[SLAVE_AGGRE_USB_NORTH] = &qns_aggre_usb_north_snoc,
};
static const struct regmap_config x1e80100_usb_north_anoc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0x7080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_usb_north_anoc = {
.config = &x1e80100_usb_north_anoc_regmap_config,
.nodes = usb_north_anoc_nodes,
.num_nodes = ARRAY_SIZE(usb_north_anoc_nodes),
.bcms = usb_north_anoc_bcms,
.num_bcms = ARRAY_SIZE(usb_north_anoc_bcms),
.qos_requires_clocks = true,
};
static struct qcom_icc_bcm * const usb_south_anoc_bcms[] = {
@@ -1867,11 +2342,21 @@ static struct qcom_icc_node * const usb_south_anoc_nodes[] = {
[SLAVE_AGGRE_USB_SOUTH] = &qns_aggre_usb_south_snoc,
};
static const struct regmap_config x1e80100_usb_south_anoc_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = 0xf080,
.fast_io = true,
};
static const struct qcom_icc_desc x1e80100_usb_south_anoc = {
.config = &x1e80100_usb_south_anoc_regmap_config,
.nodes = usb_south_anoc_nodes,
.num_nodes = ARRAY_SIZE(usb_south_anoc_nodes),
.bcms = usb_south_anoc_bcms,
.num_bcms = ARRAY_SIZE(usb_south_anoc_bcms),
.qos_requires_clocks = true,
};
static const struct of_device_id qnoc_of_match[] = {
@@ -0,0 +1,171 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
*/
#ifndef __DT_BINDINGS_INTERCONNECT_QCOM_MAILI_H
#define __DT_BINDINGS_INTERCONNECT_QCOM_MAILI_H
#define MASTER_QSPI_0 0
#define MASTER_QUP_2 1
#define MASTER_QUP_3 2
#define MASTER_QUP_4 3
#define MASTER_QUP_5 4
#define MASTER_CRYPTO 5
#define MASTER_IPA 6
#define MASTER_QUP_1 7
#define MASTER_SOCCP_PROC 8
#define MASTER_QDSS_ETR 9
#define MASTER_QDSS_ETR_1 10
#define MASTER_SDCC_2 11
#define MASTER_SDCC_4 12
#define MASTER_UFS_MEM 13
#define MASTER_USB3 14
#define SLAVE_A1NOC_SNOC 15
#define MASTER_DDR_EFF_VETO 0
#define MASTER_QUP_CORE_0 1
#define MASTER_QUP_CORE_1 2
#define MASTER_QUP_CORE_2 3
#define MASTER_QUP_CORE_3 4
#define MASTER_QUP_CORE_4 5
#define MASTER_QUP_CORE_5 6
#define SLAVE_DDR_EFF_VETO 7
#define SLAVE_QUP_CORE_0 8
#define SLAVE_QUP_CORE_1 9
#define SLAVE_QUP_CORE_2 10
#define SLAVE_QUP_CORE_3 11
#define SLAVE_QUP_CORE_4 12
#define SLAVE_QUP_CORE_5 13
#define MASTER_GEM_NOC_CNOC 0
#define MASTER_GEM_NOC_PCIE_SNOC 1
#define SLAVE_AOSS 2
#define SLAVE_IPA_CFG 3
#define SLAVE_IPC_ROUTER_FENCE 4
#define SLAVE_SOCCP 5
#define SLAVE_TME_CFG 6
#define SLAVE_CNOC_CFG 7
#define SLAVE_DDRSS_CFG 8
#define SLAVE_IMEM 9
#define SLAVE_PCIE_0 10
#define SLAVE_PCIE_1 11
#define MASTER_GIC 0
#define MASTER_GPU_TCU 1
#define MASTER_SYS_TCU 2
#define MASTER_APPSS_PROC 3
#define MASTER_GFX3D 4
#define MASTER_LPASS_GEM_NOC 5
#define MASTER_MSS_PROC 6
#define MASTER_MNOC_HF_MEM_NOC 7
#define MASTER_MNOC_SF_MEM_NOC 8
#define MASTER_COMPUTE_NOC 9
#define MASTER_ANOC_PCIE_GEM_NOC 10
#define MASTER_QPACE 11
#define MASTER_SNOC_SF_MEM_NOC 12
#define MASTER_WLAN_Q6 13
#define SLAVE_GEM_NOC_CNOC 14
#define SLAVE_LLCC 15
#define SLAVE_MEM_NOC_PCIE_SNOC 16
#define MASTER_LPIAON_NOC_LLCLPI_NOC 0
#define SLAVE_LPASS_LPI_CC 1
#define SLAVE_LLCC_ISLAND 2
#define SLAVE_SERVICE_LLCLPI_NOC 3
#define SLAVE_SERVICE_LLCLPI_NOC_CHIPCX 4
#define MASTER_LPIAON_NOC 0
#define SLAVE_LPASS_GEM_NOC 1
#define MASTER_LPASS_LPINOC 0
#define SLAVE_LPIAON_NOC_LLCLPI_NOC 1
#define SLAVE_LPIAON_NOC_LPASS_AG_NOC 2
#define MASTER_LPASS_PROC 0
#define SLAVE_LPICX_NOC_LPIAON_NOC 1
#define MASTER_LLCC 0
#define MASTER_DDR_RT 1
#define SLAVE_EBI1 2
#define SLAVE_DDR_RT 3
#define MASTER_CAMNOC_HF 0
#define MASTER_CAMNOC_NRT_ICP_SF 1
#define MASTER_CAMNOC_RT_CDM_SF 2
#define MASTER_CAMNOC_SF 3
#define MASTER_MDP 4
#define MASTER_MDSS_DCP 5
#define MASTER_CDSP_HCP 6
#define MASTER_VIDEO_CV_PROC 7
#define MASTER_VIDEO_EVA 8
#define MASTER_VIDEO_MVP 9
#define MASTER_VIDEO_V_PROC 10
#define SLAVE_MNOC_HF_MEM_NOC 11
#define SLAVE_MNOC_SF_MEM_NOC 12
#define MASTER_CDSP_PROC 0
#define SLAVE_CDSP_MEM_NOC 1
#define MASTER_PCIE_ANOC_CFG 0
#define MASTER_PCIE_0 1
#define MASTER_PCIE_1 2
#define SLAVE_ANOC_PCIE_GEM_NOC 3
#define SLAVE_SERVICE_PCIE_ANOC 4
#define MASTER_CFG_CENTER 0
#define MASTER_CFG_EAST 1
#define MASTER_CFG_MM_HF 2
#define MASTER_CFG_MM_SF 3
#define MASTER_CFG_NORTH 4
#define MASTER_CFG_SOUTH 5
#define MASTER_CFG_WEST 6
#define SLAVE_AHB2PHY_SOUTH 7
#define SLAVE_BOOT_ROM 8
#define SLAVE_CAMERA_CFG 9
#define SLAVE_CLK_CTL 10
#define SLAVE_CRYPTO_CFG 11
#define SLAVE_DISPLAY_CFG 12
#define SLAVE_EVA_CFG 13
#define SLAVE_GFX3D_CFG 14
#define SLAVE_I2C 15
#define SLAVE_IMEM_CFG 16
#define SLAVE_IPC_ROUTER_CFG 17
#define SLAVE_IRIS_CFG 18
#define SLAVE_CNOC_MSS 19
#define SLAVE_PCIE_0_CFG 20
#define SLAVE_PCIE_1_CFG 21
#define SLAVE_PRNG 22
#define SLAVE_QSPI_0 23
#define SLAVE_QUP_1 24
#define SLAVE_QUP_2 25
#define SLAVE_QUP_3 26
#define SLAVE_QUP_4 27
#define SLAVE_QUP_5 28
#define SLAVE_SDCC_2 29
#define SLAVE_SDCC_4 30
#define SLAVE_TLMM 31
#define SLAVE_UFS_MEM_CFG 32
#define SLAVE_USB3 33
#define SLAVE_VSENSE_CTRL_CFG 34
#define SLAVE_PCIE_ANOC_CFG 35
#define SLAVE_QDSS_CFG 36
#define SLAVE_QDSS_STM 37
#define SLAVE_TCSR 38
#define SLAVE_TCU 39
#define MASTER_CNOC_STARDUST 0
#define SLAVE_STARDUST_CENTER_CFG 1
#define SLAVE_STARDUST_EAST_CFG 2
#define SLAVE_STARDUST_MM_HF_CFG 3
#define SLAVE_STARDUST_MM_SF_CFG 4
#define SLAVE_STARDUST_NORTH_CFG 5
#define SLAVE_STARDUST_SOUTH_CFG 6
#define SLAVE_STARDUST_WEST_CFG 7
#define MASTER_A1NOC_SNOC 0
#define MASTER_APSS_NOC 1
#define MASTER_CNOC_SNOC 2
#define SLAVE_SNOC_GEM_NOC_SF 3
#endif