]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
serial: 8250_bcm7271: Use devm_clk_get_optional_enabled()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 5 Oct 2023 12:45:50 +0000 (15:45 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Oct 2023 09:19:44 +0000 (11:19 +0200)
Use devm_clk_get_optional_enabled() to simplify the code.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://lore.kernel.org/r/20231005124550.3607234-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_bcm7271.c

index 1a853a08654a9172758751833103ec47aa80cc9b..55dea2539c47956878f0336d02d9697cf6e43a35 100644 (file)
@@ -1015,26 +1015,23 @@ static int brcmuart_probe(struct platform_device *pdev)
        of_property_read_u32(np, "clock-frequency", &clk_rate);
 
        /* See if a Baud clock has been specified */
-       baud_mux_clk = devm_clk_get(dev, "sw_baud");
-       if (IS_ERR(baud_mux_clk)) {
-               if (PTR_ERR(baud_mux_clk) == -EPROBE_DEFER) {
-                       ret = -EPROBE_DEFER;
-                       goto release_dma;
-               }
-               dev_dbg(dev, "BAUD MUX clock not specified\n");
-       } else {
+       baud_mux_clk = devm_clk_get_optional_enabled(dev, "sw_baud");
+       ret = PTR_ERR_OR_ZERO(baud_mux_clk);
+       if (ret)
+               goto release_dma;
+       if (baud_mux_clk) {
                dev_dbg(dev, "BAUD MUX clock found\n");
-               ret = clk_prepare_enable(baud_mux_clk);
-               if (ret)
-                       goto release_dma;
+
                priv->baud_mux_clk = baud_mux_clk;
                init_real_clk_rates(dev, priv);
                clk_rate = priv->default_mux_rate;
+       } else {
+               dev_dbg(dev, "BAUD MUX clock not specified\n");
        }
 
        if (clk_rate == 0) {
                ret = dev_err_probe(dev, -EINVAL, "clock-frequency or clk not defined\n");
-               goto err_clk_disable;
+               goto release_dma;
        }
 
        dev_dbg(dev, "DMA is %senabled\n", priv->dma_enabled ? "" : "not ");
@@ -1118,8 +1115,6 @@ err1:
        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);
@@ -1134,7 +1129,6 @@ 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;