xref: /OK3568_Linux_fs/kernel/Documentation/arm/samsung/bootloader-interface.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun==========================================================
2*4882a593SmuzhiyunInterface between kernel and boot loaders on Exynos boards
3*4882a593Smuzhiyun==========================================================
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunAuthor: Krzysztof Kozlowski
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunDate  : 6 June 2015
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunThe document tries to describe currently used interface between Linux kernel
10*4882a593Smuzhiyunand boot loaders on Samsung Exynos based boards. This is not a definition
11*4882a593Smuzhiyunof interface but rather a description of existing state, a reference
12*4882a593Smuzhiyunfor information purpose only.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunIn the document "boot loader" means any of following: U-boot, proprietary
15*4882a593SmuzhiyunSBOOT or any other firmware for ARMv7 and ARMv8 initializing the board before
16*4882a593Smuzhiyunexecuting kernel.
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun1. Non-Secure mode
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunAddress:      sysram_ns_base_addr
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun============= ============================================ ==================
24*4882a593SmuzhiyunOffset        Value                                        Purpose
25*4882a593Smuzhiyun============= ============================================ ==================
26*4882a593Smuzhiyun0x08          exynos_cpu_resume_ns, mcpm_entry_point       System suspend
27*4882a593Smuzhiyun0x0c          0x00000bad (Magic cookie)                    System suspend
28*4882a593Smuzhiyun0x1c          exynos4_secondary_startup                    Secondary CPU boot
29*4882a593Smuzhiyun0x1c + 4*cpu  exynos4_secondary_startup (Exynos4412)       Secondary CPU boot
30*4882a593Smuzhiyun0x20          0xfcba0d10 (Magic cookie)                    AFTR
31*4882a593Smuzhiyun0x24          exynos_cpu_resume_ns                         AFTR
32*4882a593Smuzhiyun0x28 + 4*cpu  0x8 (Magic cookie, Exynos3250)               AFTR
33*4882a593Smuzhiyun0x28          0x0 or last value during resume (Exynos542x) System suspend
34*4882a593Smuzhiyun============= ============================================ ==================
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun2. Secure mode
38*4882a593Smuzhiyun
39*4882a593SmuzhiyunAddress:      sysram_base_addr
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun============= ============================================ ==================
42*4882a593SmuzhiyunOffset        Value                                        Purpose
43*4882a593Smuzhiyun============= ============================================ ==================
44*4882a593Smuzhiyun0x00          exynos4_secondary_startup                    Secondary CPU boot
45*4882a593Smuzhiyun0x04          exynos4_secondary_startup (Exynos542x)       Secondary CPU boot
46*4882a593Smuzhiyun4*cpu         exynos4_secondary_startup (Exynos4412)       Secondary CPU boot
47*4882a593Smuzhiyun0x20          exynos_cpu_resume (Exynos4210 r1.0)          AFTR
48*4882a593Smuzhiyun0x24          0xfcba0d10 (Magic cookie, Exynos4210 r1.0)   AFTR
49*4882a593Smuzhiyun============= ============================================ ==================
50*4882a593Smuzhiyun
51*4882a593SmuzhiyunAddress:      pmu_base_addr
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun============= ============================================ ==================
54*4882a593SmuzhiyunOffset        Value                                        Purpose
55*4882a593Smuzhiyun============= ============================================ ==================
56*4882a593Smuzhiyun0x0800        exynos_cpu_resume                            AFTR, suspend
57*4882a593Smuzhiyun0x0800        mcpm_entry_point (Exynos542x with MCPM)      AFTR, suspend
58*4882a593Smuzhiyun0x0804        0xfcba0d10 (Magic cookie)                    AFTR
59*4882a593Smuzhiyun0x0804        0x00000bad (Magic cookie)                    System suspend
60*4882a593Smuzhiyun0x0814        exynos4_secondary_startup (Exynos4210 r1.1)  Secondary CPU boot
61*4882a593Smuzhiyun0x0818        0xfcba0d10 (Magic cookie, Exynos4210 r1.1)   AFTR
62*4882a593Smuzhiyun0x081C        exynos_cpu_resume (Exynos4210 r1.1)          AFTR
63*4882a593Smuzhiyun============= ============================================ ==================
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun3. Other (regardless of secure/non-secure mode)
66*4882a593Smuzhiyun
67*4882a593SmuzhiyunAddress:      pmu_base_addr
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun============= =============================== ===============================
70*4882a593SmuzhiyunOffset        Value                           Purpose
71*4882a593Smuzhiyun============= =============================== ===============================
72*4882a593Smuzhiyun0x0908        Non-zero                        Secondary CPU boot up indicator
73*4882a593Smuzhiyun                                              on Exynos3250 and Exynos542x
74*4882a593Smuzhiyun============= =============================== ===============================
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun4. Glossary
78*4882a593Smuzhiyun
79*4882a593SmuzhiyunAFTR - ARM Off Top Running, a low power mode, Cortex cores and many other
80*4882a593Smuzhiyunmodules are power gated, except the TOP modules
81*4882a593SmuzhiyunMCPM - Multi-Cluster Power Management
82