From 3b5b888d1b33fe9978cea7131f0177cc5e8a4fbc Mon Sep 17 00:00:00 2001 From: Heiko Stuebner Date: Thu, 7 Mar 2019 08:01:37 +0100 Subject: [PATCH] rockchip: Allow socs with undefined wfe check bits Some older socs like the rk3288 do not have the necessary registers to check the wfi/wfe state of the cpu cores. Allow this case an "just" do an additional delay similar to how the Linux kernel handles smp right now. Signed-off-by: Heiko Stuebner Change-Id: I0f67af388b06b8bfb4a9bac411b4900ac266a77a --- plat/rockchip/common/drivers/pmu/pmu_com.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plat/rockchip/common/drivers/pmu/pmu_com.h b/plat/rockchip/common/drivers/pmu/pmu_com.h index 4b4b00fd..5359f73b 100644 --- a/plat/rockchip/common/drivers/pmu/pmu_com.h +++ b/plat/rockchip/common/drivers/pmu/pmu_com.h @@ -88,6 +88,17 @@ static int check_cpu_wfie(uint32_t cpu_id, uint32_t wfie_msk) cluster_id = 0; } + /* + * wfe/wfi tracking not possible, hopefully the host + * was sucessful in enabling wfe/wfi. + * We'll give a bit of additional time, like the kernel does. + */ + if ((cluster_id && clstb_cpu_wfe < 0) || + (!cluster_id && clstl_cpu_wfe < 0)) { + mdelay(1); + return 0; + } + if (cluster_id) wfie_msk <<= (clstb_cpu_wfe + cpu_id); else -- 2.30.2