mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 22:09:30 +02:00
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:
@@ -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>;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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
@@ -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 },
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user