summaryrefslogtreecommitdiff
path: root/drivers/interconnect/qcom/icc-rpmh.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/interconnect/qcom/icc-rpmh.c')
-rw-r--r--drivers/interconnect/qcom/icc-rpmh.c39
1 files changed, 18 insertions, 21 deletions
diff --git a/drivers/interconnect/qcom/icc-rpmh.c b/drivers/interconnect/qcom/icc-rpmh.c
index 001404e91041..3b445acefece 100644
--- a/drivers/interconnect/qcom/icc-rpmh.c
+++ b/drivers/interconnect/qcom/icc-rpmh.c
@@ -280,14 +280,10 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
if (!qn)
continue;
- if (desc->alloc_dyn_id) {
- if (!qn->node)
- qn->node = icc_node_create_dyn();
- node = qn->node;
- } else {
- node = icc_node_create(qn->id);
- }
+ if (!qn->node)
+ qn->node = icc_node_create_dyn();
+ node = qn->node;
if (IS_ERR(node)) {
ret = PTR_ERR(node);
goto err_remove_nodes;
@@ -302,12 +298,8 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
node->data = qn;
icc_node_add(node, provider);
- for (j = 0; j < qn->num_links; j++) {
- if (desc->alloc_dyn_id)
- icc_link_nodes(node, &qn->link_nodes[j]->node);
- else
- icc_link_create(node, qn->links[j]);
- }
+ for (j = 0; j < qn->num_links; j++)
+ icc_link_nodes(node, &qn->link_nodes[j]->node);
data->nodes[i] = node;
}
@@ -316,14 +308,19 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
struct resource *res;
void __iomem *base;
- base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
- if (IS_ERR(base))
- goto skip_qos_config;
-
- qp->regmap = devm_regmap_init_mmio(dev, base, desc->config);
- if (IS_ERR(qp->regmap)) {
- dev_info(dev, "Skipping QoS, regmap failed; %ld\n", PTR_ERR(qp->regmap));
- goto skip_qos_config;
+ /* Try parent's regmap first */
+ qp->regmap = dev_get_regmap(dev->parent, NULL);
+ if (!qp->regmap) {
+ base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ if (IS_ERR(base))
+ goto skip_qos_config;
+
+ qp->regmap = devm_regmap_init_mmio(dev, base, desc->config);
+ if (IS_ERR(qp->regmap)) {
+ dev_info(dev, "Skipping QoS, regmap failed; %ld\n",
+ PTR_ERR(qp->regmap));
+ goto skip_qos_config;
+ }
}
qp->num_clks = devm_clk_bulk_get_all(qp->dev, &qp->clks);