diff mbox series

[U-Boot,2/2] serial: lpuart: request dm device removal when booting OS

Message ID 20190710140956.1647-2-agust@denx.de
State Superseded
Delegated to: Simon Glass
Headers show
Series [U-Boot,1/2] dm: core: device: switch off power domain after device removal | expand

Commit Message

Anatolij Gustschin July 10, 2019, 2:09 p.m. UTC
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(+)
diff mbox series

Patch

diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c
index a357b00d28..9b56dfb11e 100644
--- a/drivers/serial/serial_lpuart.c
+++ b/drivers/serial/serial_lpuart.c
@@ -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,
 };