[PATCH] Revert "dm: core: device: switch off power domain after device removal"

Neil Armstrong narmstrong at baylibre.com
Mon Feb 17 10:10:36 CET 2020


This commit breaks Linux boot on Amlogic libretech-cc, libretech-ac, sei510,
sei610 board by automatically disabling the power domain after device removal.
This because the power domain associated to the video driver must be kept
enabled for linux to boot.

The only way is to use the introduced flag DM_FLAG_DEFAULT_PD_CTRL_OFF, which
removes automatic handling of power domain.
This flag is not a complete solution since it will force reverting to manually
enable the power domain from the driver probe.

Instead a flag to keep the power domain enabled after removal should be
introduced.

In the meantime revert this commit until a proper solution is found.

This reverts commit 52edfed65de967a86983a55c51ba0727090efc43.

Signed-off-by: Neil Armstrong <narmstrong at baylibre.com>
---
Hi Simon, Tom,

This revert is the simplest fix to make the boards boot again on v2020.04,
the goal is to make this behavior happen again with a proper flag to keep the
power domain enabled on specific drivers.

I can push it on my next PR on my branch, is it ok ?

Neil

 drivers/core/device-remove.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
index 444e34b492..5540053d3c 100644
--- a/drivers/core/device-remove.c
+++ b/drivers/core/device-remove.c
@@ -16,7 +16,6 @@
 #include <dm/uclass.h>
 #include <dm/uclass-internal.h>
 #include <dm/util.h>
-#include <power-domain.h>
 
 int device_chld_unbind(struct udevice *dev, struct driver *drv)
 {
@@ -194,10 +193,6 @@ int device_remove(struct udevice *dev, uint flags)
 		}
 	}
 
-	if (!(drv->flags & DM_FLAG_DEFAULT_PD_CTRL_OFF) &&
-	    (dev != gd->cur_serial_dev))
-		dev_power_domain_off(dev);
-
 	if (flags_remove(flags, drv->flags)) {
 		device_free(dev);
 
-- 
2.22.0



More information about the U-Boot mailing list