Message ID | 20200416205524.2043-4-yung-chuan.liao@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | soundwire: create master device and use it | expand |
On 16/04/2020 21:55, Bard Liao wrote: > From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > > 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> > --- Thanks for the patch, Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > drivers/soundwire/qcom.c | 26 +++++++++++++++++--------- > 1 file changed, 17 insertions(+), 9 deletions(-) > > diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c > index d6c9ad231873..e08a17c13f92 100644 > --- a/drivers/soundwire/qcom.c > +++ b/drivers/soundwire/qcom.c > @@ -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; > } > >
diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c index d6c9ad231873..e08a17c13f92 100644 --- a/drivers/soundwire/qcom.c +++ b/drivers/soundwire/qcom.c @@ -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; }