Commit 91b5cfc0 authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Vinod Koul
Browse files

soundwire: qcom: fix error handling in probe

parent 611905d6
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -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;
}