[PATCH V2 19/26] imx: imx8ulp_evk: Power down the domains may used in u-boot
Peng Fan (OSS)
peng.fan at oss.nxp.com
Wed Apr 13 05:00:59 CEST 2022
Hi Stefano,
On 2022/4/13 1:10, Stefano Babic wrote:
> Hi Peng,Ye,
>
> On 06.04.22 08:30, Peng Fan (OSS) wrote:
>> From: Ye Li <ye.li at nxp.com>
>>
>> Since ATF power domain will hold the enable counter for each power domain,
>> We need to power off them before entering kernel to avoid this
>> power domain can't be really powered off.
>>
>> Signed-off-by: Ye Li <ye.li at nxp.com>
>> Signed-off-by: Peng Fan <peng.fan at nxp.com>
>> ---
>> board/freescale/imx8ulp_evk/imx8ulp_evk.c | 30 +++++++++++++++++++++++
>> 1 file changed, 30 insertions(+)
>>
>> diff --git a/board/freescale/imx8ulp_evk/imx8ulp_evk.c b/board/freescale/imx8ulp_evk/imx8ulp_evk.c
>> index b61a4cfbe8d..1bd308148f3 100644
>> --- a/board/freescale/imx8ulp_evk/imx8ulp_evk.c
>> +++ b/board/freescale/imx8ulp_evk/imx8ulp_evk.c
>> @@ -13,6 +13,8 @@
>> #include <miiphy.h>
>> #include <netdev.h>
>> #include <asm/gpio.h>
>> +#include <power-domain.h>
>> +#include <dt-bindings/power/imx8ulp-power.h>
>
> But which patch is adding the file above ? I cannot find it, it is not
> part of this series and of course build is broken without it.
V5 patchset should not have such issue. I just see you already picked up
V5 in your repo.
Thanks,
Peng.
>
> Best regards,
> Stefano
>
>> DECLARE_GLOBAL_DATA_PTR;
>>
>> @@ -129,3 +131,31 @@ int board_late_init(void)
>> {
>> return 0;
>> }
>> +
>> +void board_quiesce_devices(void)
>> +{
>> + /* Disable the power domains may used in u-boot before entering kernel */
>> +#if CONFIG_IS_ENABLED(POWER_DOMAIN)
>> + struct udevice *scmi_devpd;
>> + int ret, i;
>> + struct power_domain pd;
>> + ulong ids[] = { IMX8ULP_PD_FLEXSPI2, IMX8ULP_PD_USB0, IMX8ULP_PD_USDHC0,
>> + IMX8ULP_PD_USDHC1, IMX8ULP_PD_USDHC2_USB1, IMX8ULP_PD_DCNANO,
>> + IMX8ULP_PD_MIPI_DSI };
>> +
>> + ret = uclass_get_device(UCLASS_POWER_DOMAIN, 0, &scmi_devpd);
>> + if (ret) {
>> + printf("Cannot get scmi devpd: err=%d\n", ret);
>> + return;
>> + }
>> +
>> + pd.dev = scmi_devpd;
>> +
>> + for (i = 0; i < ARRAY_SIZE(ids); i++) {
>> + pd.id = ids[i];
>> + ret = power_domain_off(&pd);
>> + if (ret)
>> + printf("power_domain_off %lu failed: err=%d\n", ids[i], ret);
>> + }
>> +#endif
>> +}
>
More information about the U-Boot
mailing list