From: Anatolij Gustschin Date: Mon, 17 Feb 2020 11:36:43 +0000 (+0100) Subject: dm: core: Add a flag for power domain control on device removal X-Git-Tag: v2020.04-rc4~26^2~1 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=5349e255ff913971d8b812eb363da62eace169bc;p=oweals%2Fu-boot.git dm: core: Add a flag for power domain control on device removal In various cases a power domain must stay enabled after device removal when booting OS (i.e. serial debug console or display). Add a flag to selectively skip switching off a power domain. Fixes: 52edfed65de9 ("dm: core: device: switch off power domain after device removal") Signed-off-by: Anatolij Gustschin Acked-by: Neil Armstrong Tested-by: Guillaume La Roque Reviewed-by: Simon Glass --- diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c index 444e34b492..ff5b28cb6a 100644 --- a/drivers/core/device-remove.c +++ b/drivers/core/device-remove.c @@ -194,8 +194,9 @@ int device_remove(struct udevice *dev, uint flags) } } - if (!(drv->flags & DM_FLAG_DEFAULT_PD_CTRL_OFF) && - (dev != gd->cur_serial_dev)) + if (!(drv->flags & + (DM_FLAG_DEFAULT_PD_CTRL_OFF | DM_FLAG_REMOVE_WITH_PD_ON)) && + dev != gd->cur_serial_dev) dev_power_domain_off(dev); if (flags_remove(flags, drv->flags)) { diff --git a/include/dm/device.h b/include/dm/device.h index ab806d0b7e..a56164b19b 100644 --- a/include/dm/device.h +++ b/include/dm/device.h @@ -67,6 +67,12 @@ struct driver_info; /* Driver platdata has been read. Cleared when the device is removed */ #define DM_FLAG_PLATDATA_VALID (1 << 12) +/* + * Device is removed without switching off its power domain. This might + * be required, i. e. for serial console (debug) output when booting OS. + */ +#define DM_FLAG_REMOVE_WITH_PD_ON (1 << 13) + /* * One or multiple of these flags are passed to device_remove() so that * a selective device removal as specified by the remove-stage and the