mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 14:38:58 +00:00
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:
parent
836b7f4474
commit
a4ba2a6663
1 changed files with 8 additions and 3 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue