aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/platform/msm/msm_bus/msm_bus_fabric_adhoc.c18
-rw-r--r--drivers/platform/msm/msm_bus/msm_bus_of_adhoc.c18
2 files changed, 29 insertions, 7 deletions
diff --git a/drivers/platform/msm/msm_bus/msm_bus_fabric_adhoc.c b/drivers/platform/msm/msm_bus/msm_bus_fabric_adhoc.c
index 38635eaadef..c1873e47efe 100644
--- a/drivers/platform/msm/msm_bus/msm_bus_fabric_adhoc.c
+++ b/drivers/platform/msm/msm_bus/msm_bus_fabric_adhoc.c
@@ -422,7 +422,7 @@ int msm_bus_update_clks(struct msm_bus_node_device_type *nodedev,
req_clk = nodedev->cur_clk_hz[ctx];
nodeclk = &nodedev->clk[ctx];
- if (!nodeclk->clk)
+ if (IS_ERR_OR_NULL(nodeclk))
goto exit_set_clks;
if (!nodeclk->dirty || (nodeclk->dirty && (nodeclk->rate < req_clk))) {
@@ -540,15 +540,15 @@ static int msm_bus_qos_enable_clk(struct msm_bus_node_device_type *node)
rounded_rate = clk_round_rate(node->qos_clk.clk, 1);
ret = setrate_nodeclk(&node->qos_clk, rounded_rate);
if (ret) {
- MSM_BUS_ERR("%s: Failed to enable mas qos clk, node %d",
- __func__, node->node_info->id);
+ MSM_BUS_ERR("Failed to set bus clk, node %d",
+ node->node_info->id);
goto exit_enable_qos_clk;
}
ret = enable_nodeclk(&node->qos_clk);
if (ret) {
- MSM_BUS_ERR("%s: Failed to enable mas qos clk, node %d",
- __func__, node->node_info->id);
+ MSM_BUS_ERR("Err enable mas qos clk, node %d ret %d",
+ node->node_info->id, ret);
goto exit_enable_qos_clk;
}
}
@@ -594,14 +594,18 @@ static int msm_bus_dev_init_qos(struct device *dev, void *data)
if (bus_node_info->fabdev->bypass_qos_prg)
goto exit_init_qos;
- msm_bus_qos_enable_clk(node_dev);
+ if (msm_bus_qos_enable_clk(node_dev))
+ goto exit_init_qos;
+
bus_node_info->fabdev->noc_ops.qos_init(
node_dev,
bus_node_info->fabdev->qos_base,
bus_node_info->fabdev->base_offset,
bus_node_info->fabdev->qos_off,
bus_node_info->fabdev->qos_freq);
- msm_bus_qos_disable_clk(node_dev);
+
+ if (msm_bus_qos_disable_clk(node_dev))
+ goto exit_init_qos;
}
} else
MSM_BUS_ERR("%s: Skipping QOS init for %d",
diff --git a/drivers/platform/msm/msm_bus/msm_bus_of_adhoc.c b/drivers/platform/msm/msm_bus/msm_bus_of_adhoc.c
index 4b22d260f45..46a914a260b 100644
--- a/drivers/platform/msm/msm_bus/msm_bus_of_adhoc.c
+++ b/drivers/platform/msm/msm_bus/msm_bus_of_adhoc.c
@@ -314,6 +314,24 @@ static unsigned int get_bus_node_device_data(
dev_warn(&pdev->dev,
"Coresight support absent for bus: %d\n",
node_device->node_info->id);
+ } else {
+ node_device->qos_clk.clk = of_clk_get_by_name(dev_node,
+ "bus_qos_clk");
+
+ if (IS_ERR_OR_NULL(node_device->qos_clk.clk))
+ dev_dbg(&pdev->dev,
+ "%s:Failed to get bus qos clk for mas%d",
+ __func__, node_device->node_info->id);
+
+ node_device->clk[DUAL_CTX].clk = of_clk_get_by_name(dev_node,
+ "node_clk");
+
+ if (IS_ERR_OR_NULL(node_device->clk[DUAL_CTX].clk))
+ dev_dbg(&pdev->dev,
+ "%s:Failed to get bus clk for bus%d ctx%d",
+ __func__, node_device->node_info->id,
+ DUAL_CTX);
+
}
return 0;
}