serial: msm-geni: handle devm_clk_get() errors

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: 324df15a29 ("serial: qcom: add support for GENI serial driver")
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
Caleb Connolly 2023-11-14 12:51:12 +00:00
parent 836b7f4474
commit a4ba2a6663
No known key found for this signature in database
GPG key ID: 7930459FB9303217

View 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;