@@ -488,6 +488,13 @@ static int lpuart_serial_probe(struct udevice *dev)
return _lpuart_serial_init(dev);
}
+static int lpuart_serial_remove(struct udevice *dev)
+{
+ if (dev == gd->cur_serial_dev)
+ dev->flags |= DM_FLAG_REMOVE_WITH_PD_ON;
+ return 0;
+}
+
static int lpuart_serial_ofdata_to_platdata(struct udevice *dev)
{
struct lpuart_serial_platdata *plat = dev->platdata;
@@ -539,5 +546,7 @@ U_BOOT_DRIVER(serial_lpuart) = {
.ofdata_to_platdata = lpuart_serial_ofdata_to_platdata,
.platdata_auto_alloc_size = sizeof(struct lpuart_serial_platdata),
.probe = lpuart_serial_probe,
+ .remove = lpuart_serial_remove,
.ops = &lpuart_serial_ops,
+ .flags = DM_FLAG_OS_PREPARE,
};
Extend the driver to allow dm device removal, but always let the console serial device power domain enabled, so that U-Boot doesn't crash when i. e. the serial output is enabled for debugging. Signed-off-by: Anatolij Gustschin <agust@denx.de> --- drivers/serial/serial_lpuart.c | 9 +++++++++ 1 file changed, 9 insertions(+)