mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-11 07:39:47 +00:00
soundwire: qcom: fix error handling in probe
Make sure all error cases are properly handled and all resources freed. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20200429185057.12810-1-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
611905d6e3
commit
91b5cfc020
@ -765,12 +765,16 @@ static int qcom_swrm_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
ctrl->irq = of_irq_get(dev->of_node, 0);
|
||||
if (ctrl->irq < 0)
|
||||
return ctrl->irq;
|
||||
if (ctrl->irq < 0) {
|
||||
ret = ctrl->irq;
|
||||
goto err_init;
|
||||
}
|
||||
|
||||
ctrl->hclk = devm_clk_get(dev, "iface");
|
||||
if (IS_ERR(ctrl->hclk))
|
||||
return PTR_ERR(ctrl->hclk);
|
||||
if (IS_ERR(ctrl->hclk)) {
|
||||
ret = PTR_ERR(ctrl->hclk);
|
||||
goto err_init;
|
||||
}
|
||||
|
||||
clk_prepare_enable(ctrl->hclk);
|
||||
|
||||
@ -787,7 +791,7 @@ static int qcom_swrm_probe(struct platform_device *pdev)
|
||||
|
||||
ret = qcom_swrm_get_port_config(ctrl);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto err_clk;
|
||||
|
||||
params = &ctrl->bus.params;
|
||||
params->max_dr_freq = DEFAULT_CLK_FREQ;
|
||||
@ -814,28 +818,32 @@ static int qcom_swrm_probe(struct platform_device *pdev)
|
||||
"soundwire", ctrl);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to request soundwire irq\n");
|
||||
goto err;
|
||||
goto err_clk;
|
||||
}
|
||||
|
||||
ret = sdw_add_bus_master(&ctrl->bus);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to register Soundwire controller (%d)\n",
|
||||
ret);
|
||||
goto err;
|
||||
goto err_clk;
|
||||
}
|
||||
|
||||
qcom_swrm_init(ctrl);
|
||||
ret = qcom_swrm_register_dais(ctrl);
|
||||
if (ret)
|
||||
goto err;
|
||||
goto err_master_add;
|
||||
|
||||
dev_info(dev, "Qualcomm Soundwire controller v%x.%x.%x Registered\n",
|
||||
(ctrl->version >> 24) & 0xff, (ctrl->version >> 16) & 0xff,
|
||||
ctrl->version & 0xffff);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
|
||||
err_master_add:
|
||||
sdw_delete_bus_master(&ctrl->bus);
|
||||
err_clk:
|
||||
clk_disable_unprepare(ctrl->hclk);
|
||||
err_init:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user