CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
orangepi-xunlong

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: orangepi-xunlong/orangepi-build
Path: blob/next/external/patch/atf/atf-rk3399/switch-power-domains-on-before-reset.patch
Views: 3960
1
diff --git a/plat/rockchip/rk3399/drivers/pmu/pmu.c b/plat/rockchip/rk3399/drivers/pmu/pmu.c
2
index 42589b9..8f2a419 100644
3
--- a/plat/rockchip/rk3399/drivers/pmu/pmu.c
4
+++ b/plat/rockchip/rk3399/drivers/pmu/pmu.c
5
@@ -400,7 +400,26 @@ static void pmu_power_domains_resume(void)
6
clk_gate_con_restore();
7
}
8
9
-void rk3399_flush_l2_b(void)
10
+void pmu_power_domains_on(void)
11
+{
12
+ clk_gate_con_disable();
13
+ pmu_set_power_domain(PD_VDU, pmu_pd_on);
14
+ pmu_set_power_domain(PD_VCODEC, pmu_pd_on);
15
+ pmu_set_power_domain(PD_RGA, pmu_pd_on);
16
+ pmu_set_power_domain(PD_IEP, pmu_pd_on);
17
+ pmu_set_power_domain(PD_EDP, pmu_pd_on);
18
+ pmu_set_power_domain(PD_GMAC, pmu_pd_on);
19
+ pmu_set_power_domain(PD_SDIOAUDIO, pmu_pd_on);
20
+ pmu_set_power_domain(PD_HDCP, pmu_pd_on);
21
+ pmu_set_power_domain(PD_ISP1, pmu_pd_on);
22
+ pmu_set_power_domain(PD_ISP0, pmu_pd_on);
23
+ pmu_set_power_domain(PD_VO, pmu_pd_on);
24
+ pmu_set_power_domain(PD_TCPD1, pmu_pd_on);
25
+ pmu_set_power_domain(PD_TCPD0, pmu_pd_on);
26
+ pmu_set_power_domain(PD_GPU, pmu_pd_on);
27
+}
28
+
29
+void rk3399_flush_l2_b(void)
30
{
31
uint32_t wait_cnt = 0;
32
33
diff --git a/plat/rockchip/rk3399/drivers/pmu/pmu.h b/plat/rockchip/rk3399/drivers/pmu/pmu.h
34
index e1ba410..27a453b 100644
35
--- a/plat/rockchip/rk3399/drivers/pmu/pmu.h
36
+++ b/plat/rockchip/rk3399/drivers/pmu/pmu.h
37
@@ -136,5 +136,6 @@ struct pmu_slpdata_s {
38
extern uint32_t clst_warmboot_data[PLATFORM_CLUSTER_COUNT];
39
40
extern void sram_func_set_ddrctl_pll(uint32_t pll_src);
41
+void pmu_power_domains_on(void);
42
43
#endif /* PMU_H */
44
diff --git a/plat/rockchip/rk3399/drivers/soc/soc.c b/plat/rockchip/rk3399/drivers/soc/soc.c
45
index c877dbd..98b5ad6 100644
46
--- a/plat/rockchip/rk3399/drivers/soc/soc.c
47
+++ b/plat/rockchip/rk3399/drivers/soc/soc.c
48
@@ -17,6 +17,7 @@
49
#include <dram.h>
50
#include <m0_ctl.h>
51
#include <plat_private.h>
52
+#include <pmu.h>
53
#include <rk3399_def.h>
54
#include <secure.h>
55
#include <soc.h>
56
@@ -327,6 +328,7 @@ void soc_global_soft_reset_init(void)
57
58
void __dead2 soc_global_soft_reset(void)
59
{
60
+ pmu_power_domains_on();
61
set_pll_slow_mode(VPLL_ID);
62
set_pll_slow_mode(NPLL_ID);
63
set_pll_slow_mode(GPLL_ID);
64
65