Commit 8a3b5477 authored by Doug Berger's avatar Doug Berger Committed by Greg Kroah-Hartman
Browse files

serial: 8250_bcm7271: balance clk_enable calls



The sw_baud clock must be disabled when the device driver is not
connected to the device. This now occurs when probe fails and
upon remove.

Fixes: 41a46948 ("serial: 8250: Add new 8250-core based Broadcom STB driver")
Reported-by: default avatarXuDong Liu <m202071377@hust.edu.cn>
Link: https://lore.kernel.org/lkml/20230424125100.4783-1-m202071377@hust.edu.cn/


Signed-off-by: default avatarDoug Berger <opendmb@gmail.com>
Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20230427181916.2983697-2-opendmb@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8ab5fc55
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1032,7 +1032,7 @@ static int brcmuart_probe(struct platform_device *pdev)
	if (clk_rate == 0) {
		dev_err(dev, "clock-frequency or clk not defined\n");
		ret = -EINVAL;
		goto release_dma;
		goto err_clk_disable;
	}

	dev_dbg(dev, "DMA is %senabled\n", priv->dma_enabled ? "" : "not ");
@@ -1119,6 +1119,8 @@ static int brcmuart_probe(struct platform_device *pdev)
	serial8250_unregister_port(priv->line);
err:
	brcmuart_free_bufs(dev, priv);
err_clk_disable:
	clk_disable_unprepare(baud_mux_clk);
release_dma:
	if (priv->dma_enabled)
		brcmuart_arbitration(priv, 0);
@@ -1133,6 +1135,7 @@ static int brcmuart_remove(struct platform_device *pdev)
	hrtimer_cancel(&priv->hrt);
	serial8250_unregister_port(priv->line);
	brcmuart_free_bufs(&pdev->dev, priv);
	clk_disable_unprepare(priv->baud_mux_clk);
	if (priv->dma_enabled)
		brcmuart_arbitration(priv, 0);
	return 0;