Commit e9d54c26 authored by Shawn Guo's avatar Shawn Guo Committed by Georgi Djakov
Browse files

interconnect: icc-rpm: Define ICC device type

The driver currently uses .is_bimc_node to distinguish device type BIMC
from NOC.  Define type for bus/noc devices like what downstream[1] does
to make support for more types easier.

[1] https://source.codeaurora.org/quic/la/kernel/msm-4.19/tree/drivers/soc/qcom/msm_bus/msm_bus_core.h?h=kernel.lnx.4.19.r22-rel#n46



Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
Link: https://lore.kernel.org/r/20211215002324.1727-2-shawn.guo@linaro.org


Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>
parent 1f41bada
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ static int qcom_icc_qos_set(struct icc_node *node, u64 sum_bw)

	dev_dbg(node->provider->dev, "Setting QoS for %s\n", qn->name);

	if (qp->is_bimc_node)
	if (qp->type == QCOM_ICC_BIMC)
		return qcom_icc_set_bimc_qos(node, sum_bw);

	return qcom_icc_set_noc_qos(node, sum_bw);
@@ -309,7 +309,7 @@ int qnoc_probe(struct platform_device *pdev)
		qp->bus_clks[i].id = cds[i];
	qp->num_clks = cd_num;

	qp->is_bimc_node = desc->is_bimc_node;
	qp->type = desc->type;
	qp->qos_offset = desc->qos_offset;

	if (desc->regmap_cfg) {
+8 −3
Original line number Diff line number Diff line
@@ -12,19 +12,24 @@
#define to_qcom_provider(_provider) \
	container_of(_provider, struct qcom_icc_provider, provider)

enum qcom_icc_type {
	QCOM_ICC_NOC,
	QCOM_ICC_BIMC,
};

/**
 * struct qcom_icc_provider - Qualcomm specific interconnect provider
 * @provider: generic interconnect provider
 * @bus_clks: the clk_bulk_data table of bus clocks
 * @num_clks: the total number of clk_bulk_data entries
 * @is_bimc_node: indicates whether to use bimc specific setting
 * @type: the ICC provider type
 * @qos_offset: offset to QoS registers
 * @regmap: regmap for QoS registers read/write access
 */
struct qcom_icc_provider {
	struct icc_provider provider;
	int num_clks;
	bool is_bimc_node;
	enum qcom_icc_type type;
	struct regmap *regmap;
	unsigned int qos_offset;
	struct clk_bulk_data bus_clks[];
@@ -78,7 +83,7 @@ struct qcom_icc_desc {
	const char * const *clocks;
	size_t num_clocks;
	bool has_bus_pd;
	bool is_bimc_node;
	enum qcom_icc_type type;
	const struct regmap_config *regmap_cfg;
	unsigned int qos_offset;
};
+3 −1
Original line number Diff line number Diff line
@@ -1229,6 +1229,7 @@ static const struct regmap_config msm8916_snoc_regmap_config = {
};

static struct qcom_icc_desc msm8916_snoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8916_snoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8916_snoc_nodes),
	.regmap_cfg = &msm8916_snoc_regmap_config,
@@ -1256,9 +1257,9 @@ static const struct regmap_config msm8916_bimc_regmap_config = {
};

static struct qcom_icc_desc msm8916_bimc = {
	.type = QCOM_ICC_BIMC,
	.nodes = msm8916_bimc_nodes,
	.num_nodes = ARRAY_SIZE(msm8916_bimc_nodes),
	.is_bimc_node = true,
	.regmap_cfg = &msm8916_bimc_regmap_config,
	.qos_offset = 0x8000,
};
@@ -1325,6 +1326,7 @@ static const struct regmap_config msm8916_pcnoc_regmap_config = {
};

static struct qcom_icc_desc msm8916_pcnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8916_pcnoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8916_pcnoc_nodes),
	.regmap_cfg = &msm8916_pcnoc_regmap_config,
+4 −1
Original line number Diff line number Diff line
@@ -1282,6 +1282,7 @@ static const struct regmap_config msm8939_snoc_regmap_config = {
};

static struct qcom_icc_desc msm8939_snoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8939_snoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8939_snoc_nodes),
	.regmap_cfg = &msm8939_snoc_regmap_config,
@@ -1309,6 +1310,7 @@ static const struct regmap_config msm8939_snoc_mm_regmap_config = {
};

static struct qcom_icc_desc msm8939_snoc_mm = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8939_snoc_mm_nodes,
	.num_nodes = ARRAY_SIZE(msm8939_snoc_mm_nodes),
	.regmap_cfg = &msm8939_snoc_mm_regmap_config,
@@ -1336,9 +1338,9 @@ static const struct regmap_config msm8939_bimc_regmap_config = {
};

static struct qcom_icc_desc msm8939_bimc = {
	.type = QCOM_ICC_BIMC,
	.nodes = msm8939_bimc_nodes,
	.num_nodes = ARRAY_SIZE(msm8939_bimc_nodes),
	.is_bimc_node = true,
	.regmap_cfg = &msm8939_bimc_regmap_config,
	.qos_offset = 0x8000,
};
@@ -1407,6 +1409,7 @@ static const struct regmap_config msm8939_pcnoc_regmap_config = {
};

static struct qcom_icc_desc msm8939_pcnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = msm8939_pcnoc_nodes,
	.num_nodes = ARRAY_SIZE(msm8939_pcnoc_nodes),
	.regmap_cfg = &msm8939_pcnoc_regmap_config,
+8 −1
Original line number Diff line number Diff line
@@ -1811,6 +1811,7 @@ static const struct regmap_config msm8996_a0noc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_a0noc = {
	.type = QCOM_ICC_NOC,
	.nodes = a0noc_nodes,
	.num_nodes = ARRAY_SIZE(a0noc_nodes),
	.clocks = bus_a0noc_clocks,
@@ -1834,6 +1835,7 @@ static const struct regmap_config msm8996_a1noc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_a1noc = {
	.type = QCOM_ICC_NOC,
	.nodes = a1noc_nodes,
	.num_nodes = ARRAY_SIZE(a1noc_nodes),
	.regmap_cfg = &msm8996_a1noc_regmap_config
@@ -1854,6 +1856,7 @@ static const struct regmap_config msm8996_a2noc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_a2noc = {
	.type = QCOM_ICC_NOC,
	.nodes = a2noc_nodes,
	.num_nodes = ARRAY_SIZE(a2noc_nodes),
	.regmap_cfg = &msm8996_a2noc_regmap_config
@@ -1879,9 +1882,9 @@ static const struct regmap_config msm8996_bimc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_bimc = {
	.type = QCOM_ICC_BIMC,
	.nodes = bimc_nodes,
	.num_nodes = ARRAY_SIZE(bimc_nodes),
	.is_bimc_node = true,
	.regmap_cfg = &msm8996_bimc_regmap_config
};

@@ -1937,6 +1940,7 @@ static const struct regmap_config msm8996_cnoc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_cnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = cnoc_nodes,
	.num_nodes = ARRAY_SIZE(cnoc_nodes),
	.regmap_cfg = &msm8996_cnoc_regmap_config
@@ -1989,6 +1993,7 @@ static const struct regmap_config msm8996_mnoc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_mnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = mnoc_nodes,
	.num_nodes = ARRAY_SIZE(mnoc_nodes),
	.clocks = bus_mm_clocks,
@@ -2026,6 +2031,7 @@ static const struct regmap_config msm8996_pnoc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_pnoc = {
	.type = QCOM_ICC_NOC,
	.nodes = pnoc_nodes,
	.num_nodes = ARRAY_SIZE(pnoc_nodes),
	.regmap_cfg = &msm8996_pnoc_regmap_config
@@ -2069,6 +2075,7 @@ static const struct regmap_config msm8996_snoc_regmap_config = {
};

static const struct qcom_icc_desc msm8996_snoc = {
	.type = QCOM_ICC_NOC,
	.nodes = snoc_nodes,
	.num_nodes = ARRAY_SIZE(snoc_nodes),
	.regmap_cfg = &msm8996_snoc_regmap_config
Loading