summaryrefslogtreecommitdiff
path: root/SamsungPlatformPkgOrigen/SmdkBoardPkg/Library/SmdkBoardLib/SmdkBoardHelper.S
diff options
context:
space:
mode:
Diffstat (limited to 'SamsungPlatformPkgOrigen/SmdkBoardPkg/Library/SmdkBoardLib/SmdkBoardHelper.S')
-rw-r--r--SamsungPlatformPkgOrigen/SmdkBoardPkg/Library/SmdkBoardLib/SmdkBoardHelper.S635
1 files changed, 0 insertions, 635 deletions
diff --git a/SamsungPlatformPkgOrigen/SmdkBoardPkg/Library/SmdkBoardLib/SmdkBoardHelper.S b/SamsungPlatformPkgOrigen/SmdkBoardPkg/Library/SmdkBoardLib/SmdkBoardHelper.S
deleted file mode 100644
index 9dc7abdf9..000000000
--- a/SamsungPlatformPkgOrigen/SmdkBoardPkg/Library/SmdkBoardLib/SmdkBoardHelper.S
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- * Copyright (c) 2011, Samsung Electronics Co. All rights reserved.
- *
- * This program and the accompanying materials
- * are licensed and made available under the terms and conditions of the BSD License
- * which accompanies this distribution. The full text of the license may be found at
- * http://opensource.org/licenses/bsd-license.php
- *
- * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
- */
-
-#include <AsmMacroIoLib.h>
-#include <Base.h>
-#include <Library/PcdLib.h>
-#include <Platform/ArmPlatform.h>
-#include <AutoGen.h>
-
-/* Start of Code section */
-.text
-.align 3
-
-GCC_ASM_IMPORT(_SetupPrimaryCoreStack)
-GCC_ASM_EXPORT(ArmPlatformTZPCInitialized)
-GCC_ASM_EXPORT(ArmPlatformUARTInitialized)
-GCC_ASM_EXPORT(ArmPlatformIsClockInitialized)
-GCC_ASM_EXPORT(ArmPlatformIsMemoryInitialized)
-GCC_ASM_EXPORT(ArmPlatformInitializeBootMemory)
-GCC_ASM_EXPORT(ArmPlatformSecBootAction)
-GCC_ASM_EXPORT(ArmPlatformSecBootMemoryInit)
-
-ASM_PFX(ArmPlatformTZPCInitialized):
- ldr r0, =Exynos4210_TZPC0_BASE
- mov r1, #0x0
- str r1, [r0]
- mov r1, #0xff
- str r1, [r0, #TZPC_DECPROT0SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT1SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT2SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT3SET_OFFSET]
-
- ldr r0, =Exynos4210_TZPC1_BASE
- str r1, [r0, #TZPC_DECPROT0SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT1SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT2SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT3SET_OFFSET]
-
- ldr r0, =Exynos4210_TZPC2_BASE
- str r1, [r0, #TZPC_DECPROT0SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT1SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT2SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT3SET_OFFSET]
-
- ldr r0, =Exynos4210_TZPC3_BASE
- str r1, [r0, #TZPC_DECPROT0SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT1SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT2SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT3SET_OFFSET]
-
- ldr r0, =Exynos4210_TZPC4_BASE
- str r1, [r0, #TZPC_DECPROT0SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT1SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT2SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT3SET_OFFSET]
-
- ldr r0, =Exynos4210_TZPC5_BASE
- str r1, [r0, #TZPC_DECPROT0SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT1SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT2SET_OFFSET]
- str r1, [r0, #TZPC_DECPROT3SET_OFFSET]
-
- bx lr
-
-ASM_PFX(ArmPlatformUARTInitialized):
- ldr r0, =0x11400000
- ldr r1, =0x22222222
- str r1, [r0]
- ldr r0, =0x11400020
- ldr r1, =0x222222
- str r1, [r0]
-
- ldr r0, =Exynos4210_CMU_BASE
- ldr r1, =CLK_SRC_PERIL0_VAL
- ldr r2, =CLK_SRC_PERIL0_OFFSET
- str r1, [r0, r2]
- ldr r1, =CLK_DIV_PERIL0_VAL
- ldr r2, =CLK_DIV_PERIL0_OFFSET
- str r1, [r0, r2]
-
- ldr r0, =Exynos4210_UART_BASE
- ldr r1, =0x111
- str r1, [r0, #UFCON_OFFSET]
-
- mov r1, #0x3
- str r1, [r0, #ULCON_OFFSET]
-
- ldr r1, =0x3c5
- str r1, [r0, #UCON_OFFSET]
-
- ldr r1, =UART_UBRDIV_VAL
- str r1, [r0, #UBRDIV_OFFSET]
-
- ldr r1, =UART_UDIVSLOT_VAL
- str r1, [r0, #UDIVSLOT_OFFSET]
-
- ldr r1, =0x4c4c4c4c
- str r1, [r0, #UTXH_OFFSET] // 'L'
-
- ldr r1, =0x4a4a4a4a
- str r1, [r0, #UTXH_OFFSET] // 'J'
-
- ldr r1, =0x50505050
- str r1, [r0, #UTXH_OFFSET] // 'P'
-
- bx lr
-
-
-ASM_PFX(ArmPlatformIsClockInitialized):
- ldr r0, =Exynos4210_CMU_BASE
-
- ldr r1, =0x0
- ldr r2, =CLK_SRC_CPU_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_1:
- subs r1, r1, #1
- bne cmu_1
-
- ldr r1, =CLK_DIV_CPU0_VAL
- ldr r2, =CLK_DIV_CPU0_OFFSET
- str r1, [r0, r2]
- ldr r1, =CLK_DIV_CPU1_VAL
- ldr r2, =CLK_DIV_CPU1_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =0x10000
- ldr r2, =CLK_SRC_DMC_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_2:
- subs r1, r1, #1
- bne cmu_2
-
- ldr r1, =CLK_DIV_DMC0_VAL
- ldr r2, =CLK_DIV_DMC0_OFFSET
- str r1, [r0, r2]
- ldr r1, =CLK_DIV_DMC1_VAL
- ldr r2, =CLK_DIV_DMC1_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =CLK_SRC_TOP0_VAL
- ldr r2, =CLK_SRC_TOP0_OFFSET
- str r1, [r0, r2]
- ldr r1, =CLK_SRC_TOP1_VAL
- ldr r2, =CLK_SRC_TOP1_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-
-cmu_3:
- subs r1, r1, #1
- bne cmu_3
-
- ldr r1, =CLK_DIV_TOP_VAL
- ldr r2, =CLK_DIV_TOP_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =CLK_SRC_LEFTBUS_VAL
- ldr r2, =CLK_SRC_LEFTBUS_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_4:
- subs r1, r1, #1
- bne cmu_4
-
- ldr r1, =CLK_DIV_LEFRBUS_VAL
- ldr r2, =CLK_DIV_LEFTBUS_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =CLK_SRC_RIGHTBUS_VAL
- ldr r2, =CLK_SRC_RIGHTBUS_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_5:
- subs r1, r1, #1
- bne cmu_5
-
- ldr r1, =CLK_DIV_RIGHTBUS_VAL
- ldr r2, =CLK_DIV_RIGHTBUS_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =APLL_LOCK_VAL
- ldr r2, =APLL_LOCK_OFFSET
- str r1, [r0, r2]
- ldr r1, =MPLL_LOCK_VAL
- ldr r2, =MPLL_LOCK_OFFSET
- str r1, [r0, r2]
- ldr r1, =EPLL_LOCK_VAL
- ldr r2, =EPLL_LOCK_OFFSET
- str r1, [r0, r2]
- ldr r1, =VPLL_LOCK_VAL
- ldr r2, =VPLL_LOCK_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =APLL_CON1_VAL
- ldr r2, =APLL_CON1_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =APLL_CON0_VAL
- ldr r2, =APLL_CON0_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =MPLL_CON1_VAL
- ldr r2, =MPLL_CON1_OFFSET
- str r1, [r0, r2]
- ldr r1, =MPLL_CON0_VAL
- ldr r2, =MPLL_CON0_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =EPLL_CON1_VAL
- ldr r2, =EPLL_CON1_OFFSET
- str r1, [r0, r2]
- ldr r1, =EPLL_CON0_VAL
- ldr r2, =EPLL_CON0_OFFSET
- str r1, [r0, r2]
-
- ldr r1, =VPLL_CON1_VAL
- ldr r2, =VPLL_CON1_OFFSET
- str r1, [r0, r2]
- ldr r1, =VPLL_CON0_VAL
- ldr r2, =VPLL_CON0_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_6:
- subs r1, r1, #1
- bne cmu_6
-
- ldr r1, =CLK_SRC_CPU_VAL_MOUTMPLLFOUT
- ldr r2, =CLK_SRC_CPU_OFFSET
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_7:
- subs r1, r1, #1
- bne cmu_7
-
- ldr r0, =Exynos4210_DMC_0_BASE
-
- ldr r1, =0x6910100A
- ldr r2, =DMC_PHYCONTROL0
- str r1, [r0, r2]
- ldr r1, =0x00000084
- ldr r2, =DMC_PHYCONTROL1
- str r1, [r0, r2]
-
- ldr r1, =0x6910100B
-
- ldr r2, =DMC_PHYCONTROL0
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_8:
- subs r1, r1, #1
- bne cmu_8
-
- ldr r1, =0x0000008C
- ldr r2, =DMC_PHYCONTROL1
- str r1, [r0, r2]
- ldr r1, =0x00000084
- ldr r2, =DMC_PHYCONTROL1
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_9:
- subs r1, r1, #1
- bne cmu_9
-
- ldr r0, =Exynos4210_DMC_1_BASE
-
- ldr r1, =0xe910100A
-
- ldr r2, =DMC_PHYCONTROL0
- str r1, [r0, r2]
- ldr r1, =0x00000084
- ldr r2, =DMC_PHYCONTROL1
- str r1, [r0, r2]
-
- ldr r1, =0xe910100B
-
- ldr r2, =DMC_PHYCONTROL0
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_10:
- subs r1, r1, #1
- bne cmu_10
-
- ldr r1, =0x0000008C
- ldr r2, =DMC_PHYCONTROL1
- str r1, [r0, r2]
- ldr r1, =0x00000084
- ldr r2, =DMC_PHYCONTROL1
- str r1, [r0, r2]
-
- mov r1, #Exynos4210_CMU_DELAY
-cmu_11:
- subs r1, r1, #1
- bne cmu_11
-
- ldr r0, =Exynos4210_DMC_0_BASE
- ldr r1, =0x0FFF30fa
- ldr r2, =DMC_CONCONTROL
- str r1, [r0, r2]
- ldr r0, =Exynos4210_DMC_1_BASE
- ldr r1, =0x0FFF30fa
- ldr r2, =DMC_CONCONTROL
- str r1, [r0, r2]
-
- ldr r0, =Exynos4210_DMC_0_BASE
- ldr r1, =0x00202537
- ldr r2, =DMC_MEMCONTROL
- str r1, [r0, r2]
- ldr r0, =Exynos4210_DMC_1_BASE
- ldr r1, =0x00202537
- ldr r2, =DMC_MEMCONTROL
- str r1, [r0, r2]
-
- bx lr
-
-/*
- * Call at the beginning of the platform boot up
- *
- * This function allows the firmware platform to do extra actions at the early
- * stage of the platform power up.
- *
- * Note: This function must be implemented in assembler
- * as there is no stack set up yet
- */
-ASM_PFX(ArmPlatformSecBootAction):
- bx lr
-
-
-ASM_PFX(ArmPlatformSecBootMemoryInit):
- bx lr
-
-/*
- * Called at the early stage of the Boot phase to know if the memory has
- * already been initialized. Running the code from the reset vector does
- * not mean we start from cold boot. In some case, we can go through this
- * code with the memory already initialized.
- * Because this function is called at the early stage, the implementation
- * must not use the stack. Its implementation must probably done in
- * assembly to ensure this requirement.
- *
- * @return Return the condition value into the 'Z' flag
- */
-ASM_PFX(ArmPlatformIsMemoryInitialized):
- /*
- * Check if the memory has been already mapped,
- * if so skipped the memory initialization
- */
- LoadConstantToReg (Exynos4210_DMC_0_BASE, r0)
- ldr r0, [r0, #0]
- and r0, r0, #0x20
- cmp r0, #0x00
- bx lr
-
-/*
- * Initialize the memory where the initial stacks will reside
- *
- * This memory can contain the initial stacks (Secure and Secure Monitor
- * stacks). In some platform, this region is already initialized and the
- * implementation of this function can do nothing. This memory can also
- * represent the Secure RAM.
- * This function is called before the satck has been set up. Its
- * implementation must ensure the stack pointer is not used (probably
- * required to use assembly language)
- */
-ASM_PFX(ArmPlatformInitializeBootMemory):
-/*
- * Check if the Memory is already Initialized.
- * If Initialized goto Stack setup
- */
- mov r10, lr
- bl ASM_PFX(ArmPlatformIsMemoryInitialized)
- bne skip_initmem
-
- ldr r0, =0x10010350
- mov r1, #1
- str r1, [r0]
-
-/* CLK_DIV_DMC0 on iROM DMC=50MHz for Init DMC */
- ldr r0, =Exynos4210_CMU_BASE
- ldr r1, =0x13113113
- ldr r2, =Exynos4210_CMU_DIV_DMC0
- str r1, [r0, r2]
-
-/* MIU Setting */
- ldr r0, =Exynos4210_MIU_BASE
-
- ldr r1, =0x20001507
- str r1, [r0, #0x400]
- ldr r1, =0x00000001
- str r1, [r0, #0xc00]
-
-/*****************************************************************/
-/*DREX0***********************************************************/
-/*****************************************************************/
-
- ldr r0, =Exynos4210_DMC_0_BASE
-
- ldr r1, =0xE3855503
- str r1, [r0, #DMC_PHYZQCONTROL]
-
- ldr r1, =0x71101008
- str r1, [r0, #DMC_PHYCONTROL0]
-
- ldr r1, =0x7110100A
- str r1, [r0, #DMC_PHYCONTROL0]
-
- ldr r1, =0x00000084
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x71101008
- str r1, [r0, #DMC_PHYCONTROL0]
-
- ldr r1, =0x0000008C
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x00000084
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x0000008C
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x00000084
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x00000000
- str r1, [r0, #DMC_PHYCONTROL2]
-
- ldr r1, =0x0FFF30da
- str r1, [r0, #DMC_CONCONTROL]
-
- ldr r1, =0x00202500
- str r1, [r0, #DMC_MEMCONTROL]
-
- ldr r1, =0x20f01223
- str r1, [r0, #DMC_MEMCONFIG0]
-
- ldr r1, =0xff000000
- str r1, [r0, #DMC_PRECHCONFIG]
-
- ldr r1, =0x0000005D
- str r1, [r0, #DMC_TIMINGAREF]
-
- ldr r1, =0x34498691
- str r1, [r0, #DMC_TIMINGROW]
-
- ldr r1, =0x36330306
- str r1, [r0, #DMC_TIMINGDATA]
-
- ldr r1, =0x50380365
- str r1, [r0, #DMC_TIMINGPOWER]
-
- mov r2, #Exynos4210_DMC_DELAY
-
-loop_2:
- subs r2, r2, #1
- bne loop_2
- ldr r1, =0x07000000
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_3:
- subs r2, r2, #1
- bne loop_3
- ldr r1, =0x00071C00
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_4:
- subs r2, r2, #1
- bne loop_4
-
- ldr r1, =0x00010BFC
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_5:
- subs r2, r2, #1
- bne loop_5
- ldr r1, =0x00000488
- str r1, [r0, #DMC_DIRECTCMD]
- ldr r1, =0x00000810
- str r1, [r0, #DMC_DIRECTCMD]
- ldr r1, =0x00000C08
- str r1, [r0, #DMC_DIRECTCMD]
-
-/* get DMC density information */
- ldr r1, =0x09010000
- mov r3, #10
-loop_6:
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_7:
- subs r2, r2, #1
- bne loop_7
- ldr r6, [r0, #DMC_MRSTATUS]
- subs r3, r3, #1
- bne loop_6
- and r6, r6, #0x3c
- lsr r6, r6, #2
- cmp r6, #6
- ldreq r1, =0x20e01323
- ldrne r1, =0x20f01223
- str r1, [r0, #DMC_MEMCONFIG0]
-
-/*****************************************************************/
-/*DREX1***********************************************************/
-/*****************************************************************/
- ldr r0, =Exynos4210_DMC_1_BASE
- ldr r1, =0xE3855503
- str r1, [r0, #DMC_PHYZQCONTROL]
-
- ldr r1, =0x71101008
- str r1, [r0, #DMC_PHYCONTROL0]
-
- ldr r1, =0x7110100A
- str r1, [r0, #DMC_PHYCONTROL0]
-
- ldr r1, =0x00000084
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x71101008
- str r1, [r0, #DMC_PHYCONTROL0]
-
- ldr r1, =0x0000008C
- str r1, [r0, #DMC_PHYCONTROL1]
- ldr r1, =0x00000084
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x0000008C
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x00000084
- str r1, [r0, #DMC_PHYCONTROL1]
-
- ldr r1, =0x00000000
- str r1, [r0, #DMC_PHYCONTROL2]
-
- ldr r1, =0x0FFF30da
- str r1, [r0, #DMC_CONCONTROL]
-
- ldr r1, =0x00202500
- str r1, [r0, #DMC_MEMCONTROL]
-
- ldr r1, =0x40f01223
- str r1, [r0, #DMC_MEMCONFIG0]
-
- ldr r1, =0x20f01223
- str r1, [r0, #DMC_MEMCONFIG0]
-
- ldr r1, =0xff000000
- str r1, [r0, #DMC_PRECHCONFIG]
-
- ldr r1, =0x0000005D
- str r1, [r0, #DMC_TIMINGAREF]
-
- ldr r1, =0x34498691
- str r1, [r0, #DMC_TIMINGROW]
-
- ldr r1, =0x36330306
- str r1, [r0, #DMC_TIMINGDATA]
-
- ldr r1, =0x50380365
- str r1, [r0, #DMC_TIMINGPOWER]
-
- mov r2, #Exynos4210_DMC_DELAY
-loop_8:
- subs r2, r2, #1
- bne loop_8
- ldr r1, =0x07000000
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_9:
- subs r2, r2, #1
- bne loop_9
- ldr r1, =0x00071C00
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_10:
- subs r2, r2, #1
- bne loop_10
-
- ldr r1, =0x00010BFC
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_11:
- subs r2, r2, #1
- bne loop_11
- ldr r1, =0x00000488
- str r1, [r0, #DMC_DIRECTCMD]
-
- ldr r1, =0x00000810
- str r1, [r0, #DMC_DIRECTCMD]
-
- ldr r1, =0x00000C08
- str r1, [r0, #DMC_DIRECTCMD]
-
-/* get DMC density information */
- ldr r1, =0x09010000
- mov r3, #10
-loop_12:
- str r1, [r0, #DMC_DIRECTCMD]
- mov r2, #Exynos4210_DMC_DELAY
-loop_13:
- subs r2, r2, #1
- bne loop_13
- ldr r7, [r0, #DMC_MRSTATUS]
- subs r3, r3, #1
- bne loop_12
- and r7, r7, #0x3c
- lsr r7, r7, #2
- cmp r7, #6
- ldreq r1, =0x20e01323
- ldrne r1, =0x20f01223
- str r1, [r0, #DMC_MEMCONFIG0]
-skip_initmem:
- mov lr, r10
- bx lr
-
-.end