]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
serial: msm-geni: handle devm_clk_get() errors
authorCaleb Connolly <caleb.connolly@linaro.org>
Tue, 14 Nov 2023 12:51:12 +0000 (12:51 +0000)
committerCaleb Connolly <caleb.connolly@linaro.org>
Tue, 16 Jan 2024 12:26:53 +0000 (12:26 +0000)
devm_clk_get() returns an ERR_PTR on failure, not null. Fix the check to
avoid the board crashing when the clock isn't available.

Additionally, add the missing error handling for this function.

Fixes: 324df15a292e ("serial: qcom: add support for GENI serial driver")
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
drivers/serial/serial_msm_geni.c

index 0e52e32ddf3b9de0ad692a640022b5e35138648c..e5c3dcffc1c6cf045eb3695866a47e2c749963e3 100644 (file)
@@ -188,8 +188,8 @@ static int geni_serial_set_clock_rate(struct udevice *dev, u64 rate)
        int ret;
 
        clk = devm_clk_get(dev, NULL);
-       if (!clk)
-               return -EINVAL;
+       if (IS_ERR(clk))
+               return PTR_ERR(clk);
 
        ret = clk_set_rate(clk, rate);
        return ret;
@@ -248,11 +248,16 @@ static int msm_serial_setbrg(struct udevice *dev, int baud)
        struct msm_serial_data *priv = dev_get_priv(dev);
        u64 clk_rate;
        u32 clk_div;
+       int ret;
 
        priv->baud = baud;
 
        clk_rate = get_clk_div_rate(baud, priv->oversampling, &clk_div);
-       geni_serial_set_clock_rate(dev, clk_rate);
+       ret = geni_serial_set_clock_rate(dev, clk_rate);
+       if (ret < 0) {
+               pr_err("%s: Couldn't set clock rate: %d\n", __func__, ret);
+               return ret;
+       }
        geni_serial_baud(priv->base, clk_div, baud);
 
        return 0;