162306a36Sopenharmony_ci==========================================================
262306a36Sopenharmony_ciInterface between kernel and boot loaders on Exynos boards
362306a36Sopenharmony_ci==========================================================
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciAuthor: Krzysztof Kozlowski
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciDate  : 6 June 2015
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciThe document tries to describe currently used interface between Linux kernel
1062306a36Sopenharmony_ciand boot loaders on Samsung Exynos based boards. This is not a definition
1162306a36Sopenharmony_ciof interface but rather a description of existing state, a reference
1262306a36Sopenharmony_cifor information purpose only.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciIn the document "boot loader" means any of following: U-boot, proprietary
1562306a36Sopenharmony_ciSBOOT or any other firmware for ARMv7 and ARMv8 initializing the board before
1662306a36Sopenharmony_ciexecuting kernel.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci1. Non-Secure mode
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciAddress:      sysram_ns_base_addr
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci============= ============================================ ==================
2462306a36Sopenharmony_ciOffset        Value                                        Purpose
2562306a36Sopenharmony_ci============= ============================================ ==================
2662306a36Sopenharmony_ci0x08          exynos_cpu_resume_ns, mcpm_entry_point       System suspend
2762306a36Sopenharmony_ci0x0c          0x00000bad (Magic cookie)                    System suspend
2862306a36Sopenharmony_ci0x1c          exynos4_secondary_startup                    Secondary CPU boot
2962306a36Sopenharmony_ci0x1c + 4*cpu  exynos4_secondary_startup (Exynos4412)       Secondary CPU boot
3062306a36Sopenharmony_ci0x20          0xfcba0d10 (Magic cookie)                    AFTR
3162306a36Sopenharmony_ci0x24          exynos_cpu_resume_ns                         AFTR
3262306a36Sopenharmony_ci0x28 + 4*cpu  0x8 (Magic cookie, Exynos3250)               AFTR
3362306a36Sopenharmony_ci0x28          0x0 or last value during resume (Exynos542x) System suspend
3462306a36Sopenharmony_ci============= ============================================ ==================
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci2. Secure mode
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciAddress:      sysram_base_addr
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci============= ============================================ ==================
4262306a36Sopenharmony_ciOffset        Value                                        Purpose
4362306a36Sopenharmony_ci============= ============================================ ==================
4462306a36Sopenharmony_ci0x00          exynos4_secondary_startup                    Secondary CPU boot
4562306a36Sopenharmony_ci0x04          exynos4_secondary_startup (Exynos542x)       Secondary CPU boot
4662306a36Sopenharmony_ci4*cpu         exynos4_secondary_startup (Exynos4412)       Secondary CPU boot
4762306a36Sopenharmony_ci0x20          exynos_cpu_resume (Exynos4210 r1.0)          AFTR
4862306a36Sopenharmony_ci0x24          0xfcba0d10 (Magic cookie, Exynos4210 r1.0)   AFTR
4962306a36Sopenharmony_ci============= ============================================ ==================
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciAddress:      pmu_base_addr
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci============= ============================================ ==================
5462306a36Sopenharmony_ciOffset        Value                                        Purpose
5562306a36Sopenharmony_ci============= ============================================ ==================
5662306a36Sopenharmony_ci0x0800        exynos_cpu_resume                            AFTR, suspend
5762306a36Sopenharmony_ci0x0800        mcpm_entry_point (Exynos542x with MCPM)      AFTR, suspend
5862306a36Sopenharmony_ci0x0804        0xfcba0d10 (Magic cookie)                    AFTR
5962306a36Sopenharmony_ci0x0804        0x00000bad (Magic cookie)                    System suspend
6062306a36Sopenharmony_ci0x0814        exynos4_secondary_startup (Exynos4210 r1.1)  Secondary CPU boot
6162306a36Sopenharmony_ci0x0818        0xfcba0d10 (Magic cookie, Exynos4210 r1.1)   AFTR
6262306a36Sopenharmony_ci0x081C        exynos_cpu_resume (Exynos4210 r1.1)          AFTR
6362306a36Sopenharmony_ci============= ============================================ ==================
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci3. Other (regardless of secure/non-secure mode)
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciAddress:      pmu_base_addr
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci============= =============================== ===============================
7062306a36Sopenharmony_ciOffset        Value                           Purpose
7162306a36Sopenharmony_ci============= =============================== ===============================
7262306a36Sopenharmony_ci0x0908        Non-zero                        Secondary CPU boot up indicator
7362306a36Sopenharmony_ci                                              on Exynos3250 and Exynos542x
7462306a36Sopenharmony_ci============= =============================== ===============================
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci4. Glossary
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciAFTR - ARM Off Top Running, a low power mode, Cortex cores and many other
8062306a36Sopenharmony_cimodules are power gated, except the TOP modules
8162306a36Sopenharmony_ciMCPM - Multi-Cluster Power Management
82