From patchwork Mon Feb 17 11:36:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatolij Gustschin X-Patchwork-Id: 236433 List-Id: U-Boot discussion From: agust at denx.de (Anatolij Gustschin) Date: Mon, 17 Feb 2020 12:36:43 +0100 Subject: [PATCH 1/2] dm: core: Add a flag for power domain control on device removal Message-ID: <20200217113644.21434-1-agust@denx.de> 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 Reviewed-by: Simon Glass --- drivers/core/device-remove.c | 5 +++-- include/dm/device.h | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) 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 From patchwork Mon Feb 17 11:36:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatolij Gustschin X-Patchwork-Id: 236434 List-Id: U-Boot discussion From: agust at denx.de (Anatolij Gustschin) Date: Mon, 17 Feb 2020 12:36:44 +0100 Subject: [PATCH 2/2] video: meson: keep power domain up after booting In-Reply-To: <20200217113644.21434-1-agust@denx.de> References: <20200217113644.21434-1-agust@denx.de> Message-ID: <20200217113644.21434-2-agust@denx.de> Add driver flag to skip power domain disabling on device removal. 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 --- drivers/video/meson/meson_vpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/meson/meson_vpu.c b/drivers/video/meson/meson_vpu.c index 4eb66398d0..aa8c0a962f 100644 --- a/drivers/video/meson/meson_vpu.c +++ b/drivers/video/meson/meson_vpu.c @@ -210,5 +210,5 @@ U_BOOT_DRIVER(meson_vpu) = { .probe = meson_vpu_probe, .bind = meson_vpu_bind, .priv_auto_alloc_size = sizeof(struct meson_vpu_priv), - .flags = DM_FLAG_PRE_RELOC, + .flags = DM_FLAG_PRE_RELOC | DM_FLAG_REMOVE_WITH_PD_ON, };