]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
serial: pl01x: set baudrate when probing
authorYang Xiwen <forbidden405@outlook.com>
Wed, 28 Feb 2024 10:57:52 +0000 (18:57 +0800)
committerTom Rini <trini@konsulko.com>
Thu, 7 Mar 2024 12:59:16 +0000 (07:59 -0500)
It is found that when DM is enabled, only generic init function is
called in .probe(). Baudrate is never honored. Add a function call
to .setbrg() when probing so that we can update the baudrate of the
serial device.

Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
drivers/serial/serial_pl01x.c

index 428a4d210de57c78f02472ebdc14afb47fca148c..f04c21e0826487ae32d4da5d21752a700baa927b 100644 (file)
@@ -290,6 +290,7 @@ int pl01x_serial_probe(struct udevice *dev)
 {
        struct pl01x_serial_plat *plat = dev_get_plat(dev);
        struct pl01x_priv *priv = dev_get_priv(dev);
+       int ret;
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
        struct dtd_serial_pl01x *dtplat = &plat->dtplat;
@@ -301,10 +302,14 @@ int pl01x_serial_probe(struct udevice *dev)
 #endif
        priv->type = plat->type;
 
-       if (!plat->skip_init)
-               return pl01x_generic_serial_init(priv->regs, priv->type);
-       else
+       if (!plat->skip_init) {
+               ret = pl01x_generic_serial_init(priv->regs, priv->type);
+               if (ret)
+                       return ret;
+               return pl01x_serial_setbrg(dev, gd->baudrate);
+       } else {
                return 0;
+       }
 }
 
 int pl01x_serial_getc(struct udevice *dev)