diff options
| -rw-r--r-- | drivers/platform/msm/msm_bus/msm_bus_fabric_adhoc.c | 18 | ||||
| -rw-r--r-- | drivers/platform/msm/msm_bus/msm_bus_of_adhoc.c | 18 |
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; } |
