Loading drivers/soc/qcom/dcc_v2.c +54 −8 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ struct dcc_drvdata { void __iomem *ram_base; uint32_t ram_size; struct clk *clk; struct clk *xo_clk; uint32_t ram_offset; enum dcc_data_sink data_sink; enum dcc_func_type func_type[DCC_MAX_LINK_LIST]; Loading Loading @@ -203,6 +204,13 @@ static int dcc_sw_trigger(struct dcc_drvdata *drvdata) mutex_lock(&drvdata->mutex); if (drvdata->clk) { ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_err(drvdata->dev, "DCC xo clk enable failed\n"); mutex_unlock(&drvdata->mutex); return ret; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_err(drvdata->dev, "DCC clk enable failed\n"); Loading Loading @@ -234,8 +242,10 @@ static int dcc_sw_trigger(struct dcc_drvdata *drvdata) ret = dcc_read_status(drvdata); err: if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } mutex_unlock(&drvdata->mutex); return ret; } Loading Loading @@ -552,6 +562,12 @@ static int dcc_enable(struct dcc_drvdata *drvdata) mutex_lock(&drvdata->mutex); if (drvdata->clk) { ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_info(drvdata->dev, "DCC xo clk enable failed\n"); goto err; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_info(drvdata->dev, "DCC clk enable failed\n"); Loading @@ -573,8 +589,10 @@ static int dcc_enable(struct dcc_drvdata *drvdata) ret = __dcc_ll_cfg(drvdata, list); if (ret) { dev_info(drvdata->dev, "DCC ram programming failed\n"); if (drvdata->clk && !drvdata->enable[list]) if (drvdata->clk && !drvdata->enable[list]) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } goto err; } Loading Loading @@ -638,8 +656,10 @@ static void dcc_disable(struct dcc_drvdata *drvdata) drvdata->ram_cfg = 0; drvdata->ram_start = 0; if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } mutex_unlock(&drvdata->mutex); } Loading @@ -660,8 +680,16 @@ static ssize_t dcc_curr_list(struct device *dev, mutex_lock(&drvdata->mutex); if (drvdata->clk) { int ret = clk_prepare_enable(drvdata->clk); int ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_err(drvdata->dev, "DCC xo clk enable failed\n"); mutex_unlock(&drvdata->mutex); return -EINVAL; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_err(drvdata->dev, "DCC clk enable failed\n"); mutex_unlock(&drvdata->mutex); Loading @@ -676,8 +704,10 @@ static ssize_t dcc_curr_list(struct device *dev, return -EINVAL; } drvdata->curr_list = val; if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } mutex_unlock(&drvdata->mutex); return size; Loading Loading @@ -1428,6 +1458,11 @@ static ssize_t dcc_sram_read(struct file *file, char __user *data, return -ENOMEM; if (drvdata->clk) { ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { kfree(buf); return ret; } ret = clk_prepare_enable(drvdata->clk); if (ret) { kfree(buf); Loading @@ -1437,8 +1472,10 @@ static ssize_t dcc_sram_read(struct file *file, char __user *data, memcpy_fromio(buf, (drvdata->ram_base + *ppos), len); if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } if (copy_to_user(data, buf, len)) { dev_err(drvdata->dev, Loading Loading @@ -1613,10 +1650,17 @@ static int dcc_probe(struct platform_device *pdev) if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) { drvdata->clk = devm_clk_get(dev, "dcc_clk"); if (IS_ERR(drvdata->clk)) { drvdata->xo_clk = devm_clk_get(dev, "dcc_xo_clk"); if (IS_ERR(drvdata->clk) && IS_ERR(drvdata->xo_clk)) { dev_info(dev, "devm_clk_get failed, probing deffered\n"); return -EPROBE_DEFER; } ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_err(dev, "xo clk prepare enable failed\n"); return -EINVAL; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_err(dev, "clk prepare enable failed\n"); Loading Loading @@ -1657,8 +1701,10 @@ static int dcc_probe(struct platform_device *pdev) memset_io(drvdata->ram_base, 0, drvdata->ram_size); if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } drvdata->data_sink = DCC_DATA_SINK_SRAM; ret = of_property_read_string(pdev->dev.of_node, "qcom,data-sink", Loading Loading
drivers/soc/qcom/dcc_v2.c +54 −8 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ struct dcc_drvdata { void __iomem *ram_base; uint32_t ram_size; struct clk *clk; struct clk *xo_clk; uint32_t ram_offset; enum dcc_data_sink data_sink; enum dcc_func_type func_type[DCC_MAX_LINK_LIST]; Loading Loading @@ -203,6 +204,13 @@ static int dcc_sw_trigger(struct dcc_drvdata *drvdata) mutex_lock(&drvdata->mutex); if (drvdata->clk) { ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_err(drvdata->dev, "DCC xo clk enable failed\n"); mutex_unlock(&drvdata->mutex); return ret; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_err(drvdata->dev, "DCC clk enable failed\n"); Loading Loading @@ -234,8 +242,10 @@ static int dcc_sw_trigger(struct dcc_drvdata *drvdata) ret = dcc_read_status(drvdata); err: if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } mutex_unlock(&drvdata->mutex); return ret; } Loading Loading @@ -552,6 +562,12 @@ static int dcc_enable(struct dcc_drvdata *drvdata) mutex_lock(&drvdata->mutex); if (drvdata->clk) { ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_info(drvdata->dev, "DCC xo clk enable failed\n"); goto err; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_info(drvdata->dev, "DCC clk enable failed\n"); Loading @@ -573,8 +589,10 @@ static int dcc_enable(struct dcc_drvdata *drvdata) ret = __dcc_ll_cfg(drvdata, list); if (ret) { dev_info(drvdata->dev, "DCC ram programming failed\n"); if (drvdata->clk && !drvdata->enable[list]) if (drvdata->clk && !drvdata->enable[list]) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } goto err; } Loading Loading @@ -638,8 +656,10 @@ static void dcc_disable(struct dcc_drvdata *drvdata) drvdata->ram_cfg = 0; drvdata->ram_start = 0; if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } mutex_unlock(&drvdata->mutex); } Loading @@ -660,8 +680,16 @@ static ssize_t dcc_curr_list(struct device *dev, mutex_lock(&drvdata->mutex); if (drvdata->clk) { int ret = clk_prepare_enable(drvdata->clk); int ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_err(drvdata->dev, "DCC xo clk enable failed\n"); mutex_unlock(&drvdata->mutex); return -EINVAL; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_err(drvdata->dev, "DCC clk enable failed\n"); mutex_unlock(&drvdata->mutex); Loading @@ -676,8 +704,10 @@ static ssize_t dcc_curr_list(struct device *dev, return -EINVAL; } drvdata->curr_list = val; if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } mutex_unlock(&drvdata->mutex); return size; Loading Loading @@ -1428,6 +1458,11 @@ static ssize_t dcc_sram_read(struct file *file, char __user *data, return -ENOMEM; if (drvdata->clk) { ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { kfree(buf); return ret; } ret = clk_prepare_enable(drvdata->clk); if (ret) { kfree(buf); Loading @@ -1437,8 +1472,10 @@ static ssize_t dcc_sram_read(struct file *file, char __user *data, memcpy_fromio(buf, (drvdata->ram_base + *ppos), len); if (drvdata->clk) if (drvdata->clk) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } if (copy_to_user(data, buf, len)) { dev_err(drvdata->dev, Loading Loading @@ -1613,10 +1650,17 @@ static int dcc_probe(struct platform_device *pdev) if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) { drvdata->clk = devm_clk_get(dev, "dcc_clk"); if (IS_ERR(drvdata->clk)) { drvdata->xo_clk = devm_clk_get(dev, "dcc_xo_clk"); if (IS_ERR(drvdata->clk) && IS_ERR(drvdata->xo_clk)) { dev_info(dev, "devm_clk_get failed, probing deffered\n"); return -EPROBE_DEFER; } ret = clk_prepare_enable(drvdata->xo_clk); if (ret) { dev_err(dev, "xo clk prepare enable failed\n"); return -EINVAL; } ret = clk_prepare_enable(drvdata->clk); if (ret) { dev_err(dev, "clk prepare enable failed\n"); Loading Loading @@ -1657,8 +1701,10 @@ static int dcc_probe(struct platform_device *pdev) memset_io(drvdata->ram_base, 0, drvdata->ram_size); if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) { clk_disable_unprepare(drvdata->clk); clk_disable_unprepare(drvdata->xo_clk); } drvdata->data_sink = DCC_DATA_SINK_SRAM; ret = of_property_read_string(pdev->dev.of_node, "qcom,data-sink", Loading