mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-27 15:12:21 +00:00
83d290c56f
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
692 lines
13 KiB
ArmAsm
692 lines
13 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Low-level board setup code for TI DaVinci SoC based boards.
|
|
*
|
|
* Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
|
|
*
|
|
* Partially based on TI sources, original copyrights follow:
|
|
*/
|
|
|
|
/*
|
|
* Board specific setup info
|
|
*
|
|
* (C) Copyright 2003
|
|
* Texas Instruments, <www.ti.com>
|
|
* Kshitij Gupta <Kshitij@ti.com>
|
|
*
|
|
* Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
|
|
*
|
|
* Modified for OMAP 5912 OSK board by Rishi Bhattacharya, Apr 2004
|
|
*
|
|
* Modified for DV-EVM board by Rishi Bhattacharya, Apr 2005
|
|
*
|
|
* Modified for DV-EVM board by Swaminathan S, Nov 2005
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#define MDSTAT_STATE 0x3f
|
|
|
|
.globl lowlevel_init
|
|
lowlevel_init:
|
|
#ifdef CONFIG_SOC_DM644X
|
|
|
|
/*-------------------------------------------------------*
|
|
* Mask all IRQs by setting all bits in the EINT default *
|
|
*-------------------------------------------------------*/
|
|
mov r1, $0
|
|
ldr r0, =EINT_ENABLE0
|
|
str r1, [r0]
|
|
ldr r0, =EINT_ENABLE1
|
|
str r1, [r0]
|
|
|
|
/*------------------------------------------------------*
|
|
* Put the GEM in reset *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Put the GEM in reset */
|
|
ldr r8, PSC_GEM_FLAG_CLEAR
|
|
ldr r6, MDCTL_GEM
|
|
ldr r7, [r6]
|
|
and r7, r7, r8
|
|
str r7, [r6]
|
|
|
|
/* Enable the Power Domain Transition Command */
|
|
ldr r6, PTCMD
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x02
|
|
str r7, [r6]
|
|
|
|
/* Check for Transition Complete(PTSTAT) */
|
|
checkStatClkStopGem:
|
|
ldr r6, PTSTAT
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x02
|
|
bne checkStatClkStopGem
|
|
|
|
/* Check for GEM Reset Completion */
|
|
checkGemStatClkStop:
|
|
ldr r6, MDSTAT_GEM
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x100
|
|
bne checkGemStatClkStop
|
|
|
|
/* Do this for enabling a WDT initiated reset this is a workaround
|
|
for a chip bug. Not required under normal situations */
|
|
ldr r6, P1394
|
|
mov r10, $0
|
|
str r10, [r6]
|
|
|
|
/*------------------------------------------------------*
|
|
* Enable L1 & L2 Memories in Fast mode *
|
|
*------------------------------------------------------*/
|
|
ldr r6, DFT_ENABLE
|
|
mov r10, $0x01
|
|
str r10, [r6]
|
|
|
|
ldr r6, MMARG_BRF0
|
|
ldr r10, MMARG_BRF0_VAL
|
|
str r10, [r6]
|
|
|
|
ldr r6, DFT_ENABLE
|
|
mov r10, $0
|
|
str r10, [r6]
|
|
|
|
/*------------------------------------------------------*
|
|
* DDR2 PLL Initialization *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Select the Clock Mode Depending on the Value written in the Boot Table by the run script */
|
|
mov r10, $0
|
|
ldr r6, PLL2_CTL
|
|
ldr r7, PLL_CLKSRC_MASK
|
|
ldr r8, [r6]
|
|
and r8, r8, r7
|
|
mov r9, r10, lsl $8
|
|
orr r8, r8, r9
|
|
str r8, [r6]
|
|
|
|
/* Select the PLLEN source */
|
|
ldr r7, PLL_ENSRC_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Bypass the PLL */
|
|
ldr r7, PLL_BYPASS_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Wait for few cycles to allow PLLEN Mux switch properly to bypass Clock */
|
|
mov r10, $0x20
|
|
WaitPPL2Loop:
|
|
subs r10, r10, $1
|
|
bne WaitPPL2Loop
|
|
|
|
/* Reset the PLL */
|
|
ldr r7, PLL_RESET_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Power up the PLL */
|
|
ldr r7, PLL_PWRUP_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Enable the PLL from Disable Mode */
|
|
ldr r7, PLL_DISABLE_ENABLE_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Program the PLL Multiplier */
|
|
ldr r6, PLL2_PLLM
|
|
mov r2, $0x17 /* 162 MHz */
|
|
str r2, [r6]
|
|
|
|
/* Program the PLL2 Divisor Value */
|
|
ldr r6, PLL2_DIV2
|
|
mov r3, $0x01
|
|
str r3, [r6]
|
|
|
|
/* Program the PLL2 Divisor Value */
|
|
ldr r6, PLL2_DIV1
|
|
mov r4, $0x0b /* 54 MHz */
|
|
str r4, [r6]
|
|
|
|
/* PLL2 DIV2 MMR */
|
|
ldr r8, PLL2_DIV_MASK
|
|
ldr r6, PLL2_DIV2
|
|
ldr r9, [r6]
|
|
and r8, r8, r9
|
|
mov r9, $0x01
|
|
mov r9, r9, lsl $15
|
|
orr r8, r8, r9
|
|
str r8, [r6]
|
|
|
|
/* Program the GOSET bit to take new divider values */
|
|
ldr r6, PLL2_PLLCMD
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x01
|
|
str r7, [r6]
|
|
|
|
/* Wait for Done */
|
|
ldr r6, PLL2_PLLSTAT
|
|
doneLoop_0:
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x01
|
|
bne doneLoop_0
|
|
|
|
/* PLL2 DIV1 MMR */
|
|
ldr r8, PLL2_DIV_MASK
|
|
ldr r6, PLL2_DIV1
|
|
ldr r9, [r6]
|
|
and r8, r8, r9
|
|
mov r9, $0x01
|
|
mov r9, r9, lsl $15
|
|
orr r8, r8, r9
|
|
str r8, [r6]
|
|
|
|
/* Program the GOSET bit to take new divider values */
|
|
ldr r6, PLL2_PLLCMD
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x01
|
|
str r7, [r6]
|
|
|
|
/* Wait for Done */
|
|
ldr r6, PLL2_PLLSTAT
|
|
doneLoop:
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x01
|
|
bne doneLoop
|
|
|
|
/* Wait for PLL to Reset Properly */
|
|
mov r10, $0x218
|
|
ResetPPL2Loop:
|
|
subs r10, r10, $1
|
|
bne ResetPPL2Loop
|
|
|
|
/* Bring PLL out of Reset */
|
|
ldr r6, PLL2_CTL
|
|
ldr r8, [r6]
|
|
orr r8, r8, $0x08
|
|
str r8, [r6]
|
|
|
|
/* Wait for PLL to Lock */
|
|
ldr r10, PLL_LOCK_COUNT
|
|
PLL2Lock:
|
|
subs r10, r10, $1
|
|
bne PLL2Lock
|
|
|
|
/* Enable the PLL */
|
|
ldr r6, PLL2_CTL
|
|
ldr r8, [r6]
|
|
orr r8, r8, $0x01
|
|
str r8, [r6]
|
|
|
|
/*------------------------------------------------------*
|
|
* Issue Soft Reset to DDR Module *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Shut down the DDR2 LPSC Module */
|
|
ldr r8, PSC_FLAG_CLEAR
|
|
ldr r6, MDCTL_DDR2
|
|
ldr r7, [r6]
|
|
and r7, r7, r8
|
|
orr r7, r7, $0x03
|
|
str r7, [r6]
|
|
|
|
/* Enable the Power Domain Transition Command */
|
|
ldr r6, PTCMD
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x01
|
|
str r7, [r6]
|
|
|
|
/* Check for Transition Complete(PTSTAT) */
|
|
checkStatClkStop:
|
|
ldr r6, PTSTAT
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x01
|
|
bne checkStatClkStop
|
|
|
|
/* Check for DDR2 Controller Enable Completion */
|
|
checkDDRStatClkStop:
|
|
ldr r6, MDSTAT_DDR2
|
|
ldr r7, [r6]
|
|
and r7, r7, $MDSTAT_STATE
|
|
cmp r7, $0x03
|
|
bne checkDDRStatClkStop
|
|
|
|
/*------------------------------------------------------*
|
|
* Program DDR2 MMRs for 162MHz Setting *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Program PHY Control Register */
|
|
ldr r6, DDRCTL
|
|
ldr r7, DDRCTL_VAL
|
|
str r7, [r6]
|
|
|
|
/* Program SDRAM Bank Config Register */
|
|
ldr r6, SDCFG
|
|
ldr r7, SDCFG_VAL
|
|
str r7, [r6]
|
|
|
|
/* Program SDRAM TIM-0 Config Register */
|
|
ldr r6, SDTIM0
|
|
ldr r7, SDTIM0_VAL_162MHz
|
|
str r7, [r6]
|
|
|
|
/* Program SDRAM TIM-1 Config Register */
|
|
ldr r6, SDTIM1
|
|
ldr r7, SDTIM1_VAL_162MHz
|
|
str r7, [r6]
|
|
|
|
/* Program the SDRAM Bank Config Control Register */
|
|
ldr r10, MASK_VAL
|
|
ldr r8, SDCFG
|
|
ldr r9, SDCFG_VAL
|
|
and r9, r9, r10
|
|
str r9, [r8]
|
|
|
|
/* Program SDRAM SDREF Config Register */
|
|
ldr r6, SDREF
|
|
ldr r7, SDREF_VAL
|
|
str r7, [r6]
|
|
|
|
/*------------------------------------------------------*
|
|
* Issue Soft Reset to DDR Module *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Issue a Dummy DDR2 read/write */
|
|
ldr r8, DDR2_START_ADDR
|
|
ldr r7, DUMMY_VAL
|
|
str r7, [r8]
|
|
ldr r7, [r8]
|
|
|
|
/* Shut down the DDR2 LPSC Module */
|
|
ldr r8, PSC_FLAG_CLEAR
|
|
ldr r6, MDCTL_DDR2
|
|
ldr r7, [r6]
|
|
and r7, r7, r8
|
|
orr r7, r7, $0x01
|
|
str r7, [r6]
|
|
|
|
/* Enable the Power Domain Transition Command */
|
|
ldr r6, PTCMD
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x01
|
|
str r7, [r6]
|
|
|
|
/* Check for Transition Complete(PTSTAT) */
|
|
checkStatClkStop2:
|
|
ldr r6, PTSTAT
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x01
|
|
bne checkStatClkStop2
|
|
|
|
/* Check for DDR2 Controller Enable Completion */
|
|
checkDDRStatClkStop2:
|
|
ldr r6, MDSTAT_DDR2
|
|
ldr r7, [r6]
|
|
and r7, r7, $MDSTAT_STATE
|
|
cmp r7, $0x01
|
|
bne checkDDRStatClkStop2
|
|
|
|
/*------------------------------------------------------*
|
|
* Turn DDR2 Controller Clocks On *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Enable the DDR2 LPSC Module */
|
|
ldr r6, MDCTL_DDR2
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x03
|
|
str r7, [r6]
|
|
|
|
/* Enable the Power Domain Transition Command */
|
|
ldr r6, PTCMD
|
|
ldr r7, [r6]
|
|
orr r7, r7, $0x01
|
|
str r7, [r6]
|
|
|
|
/* Check for Transition Complete(PTSTAT) */
|
|
checkStatClkEn2:
|
|
ldr r6, PTSTAT
|
|
ldr r7, [r6]
|
|
ands r7, r7, $0x01
|
|
bne checkStatClkEn2
|
|
|
|
/* Check for DDR2 Controller Enable Completion */
|
|
checkDDRStatClkEn2:
|
|
ldr r6, MDSTAT_DDR2
|
|
ldr r7, [r6]
|
|
and r7, r7, $MDSTAT_STATE
|
|
cmp r7, $0x03
|
|
bne checkDDRStatClkEn2
|
|
|
|
/* DDR Writes and Reads */
|
|
ldr r6, CFGTEST
|
|
mov r3, $0x01
|
|
str r3, [r6]
|
|
|
|
/*------------------------------------------------------*
|
|
* System PLL Initialization *
|
|
*------------------------------------------------------*/
|
|
|
|
/* Select the Clock Mode Depending on the Value written in the Boot Table by the run script */
|
|
mov r2, $0
|
|
ldr r6, PLL1_CTL
|
|
ldr r7, PLL_CLKSRC_MASK
|
|
ldr r8, [r6]
|
|
and r8, r8, r7
|
|
mov r9, r2, lsl $8
|
|
orr r8, r8, r9
|
|
str r8, [r6]
|
|
|
|
/* Select the PLLEN source */
|
|
ldr r7, PLL_ENSRC_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Bypass the PLL */
|
|
ldr r7, PLL_BYPASS_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Wait for few cycles to allow PLLEN Mux switch properly to bypass Clock */
|
|
mov r10, $0x20
|
|
|
|
WaitLoop:
|
|
subs r10, r10, $1
|
|
bne WaitLoop
|
|
|
|
/* Reset the PLL */
|
|
ldr r7, PLL_RESET_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Disable the PLL */
|
|
orr r8, r8, $0x10
|
|
str r8, [r6]
|
|
|
|
/* Power up the PLL */
|
|
ldr r7, PLL_PWRUP_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Enable the PLL from Disable Mode */
|
|
ldr r7, PLL_DISABLE_ENABLE_MASK
|
|
and r8, r8, r7
|
|
str r8, [r6]
|
|
|
|
/* Program the PLL Multiplier */
|
|
ldr r6, PLL1_PLLM
|
|
mov r3, $0x15 /* For 594MHz */
|
|
str r3, [r6]
|
|
|
|
/* Wait for PLL to Reset Properly */
|
|
mov r10, $0xff
|
|
|
|
ResetLoop:
|
|
subs r10, r10, $1
|
|
bne ResetLoop
|
|
|
|
/* Bring PLL out of Reset */
|
|
ldr r6, PLL1_CTL
|
|
orr r8, r8, $0x08
|
|
str r8, [r6]
|
|
|
|
/* Wait for PLL to Lock */
|
|
ldr r10, PLL_LOCK_COUNT
|
|
|
|
PLL1Lock:
|
|
subs r10, r10, $1
|
|
bne PLL1Lock
|
|
|
|
/* Enable the PLL */
|
|
orr r8, r8, $0x01
|
|
str r8, [r6]
|
|
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
|
|
/*------------------------------------------------------*
|
|
* AEMIF configuration for NOR Flash (double check) *
|
|
*------------------------------------------------------*/
|
|
ldr r0, _PINMUX0
|
|
ldr r1, _DEV_SETTING
|
|
str r1, [r0]
|
|
|
|
ldr r0, WAITCFG
|
|
ldr r1, WAITCFG_VAL
|
|
ldr r2, [r0]
|
|
orr r2, r2, r1
|
|
str r2, [r0]
|
|
|
|
ldr r0, ACFG3
|
|
ldr r1, ACFG3_VAL
|
|
ldr r2, [r0]
|
|
and r1, r2, r1
|
|
str r1, [r0]
|
|
|
|
ldr r0, ACFG4
|
|
ldr r1, ACFG4_VAL
|
|
ldr r2, [r0]
|
|
and r1, r2, r1
|
|
str r1, [r0]
|
|
|
|
ldr r0, ACFG5
|
|
ldr r1, ACFG5_VAL
|
|
ldr r2, [r0]
|
|
and r1, r2, r1
|
|
str r1, [r0]
|
|
|
|
/*--------------------------------------*
|
|
* VTP manual Calibration *
|
|
*--------------------------------------*/
|
|
ldr r0, VTPIOCR
|
|
ldr r1, VTP_MMR0
|
|
str r1, [r0]
|
|
|
|
ldr r0, VTPIOCR
|
|
ldr r1, VTP_MMR1
|
|
str r1, [r0]
|
|
|
|
/* Wait for 33 VTP CLK cycles. VRP operates at 27 MHz */
|
|
ldr r10, VTP_LOCK_COUNT
|
|
VTPLock:
|
|
subs r10, r10, $1
|
|
bne VTPLock
|
|
|
|
ldr r6, DFT_ENABLE
|
|
mov r10, $0x01
|
|
str r10, [r6]
|
|
|
|
ldr r6, DDRVTPR
|
|
ldr r7, [r6]
|
|
mov r8, r7, LSL #32-10
|
|
mov r8, r8, LSR #32-10 /* grab low 10 bits */
|
|
ldr r7, VTP_RECAL
|
|
orr r8, r7, r8
|
|
ldr r7, VTP_EN
|
|
orr r8, r7, r8
|
|
str r8, [r0]
|
|
|
|
|
|
/* Wait for 33 VTP CLK cycles. VRP operates at 27 MHz */
|
|
ldr r10, VTP_LOCK_COUNT
|
|
VTP1Lock:
|
|
subs r10, r10, $1
|
|
bne VTP1Lock
|
|
|
|
ldr r1, [r0]
|
|
ldr r2, VTP_MASK
|
|
and r2, r1, r2
|
|
str r2, [r0]
|
|
|
|
ldr r6, DFT_ENABLE
|
|
mov r10, $0
|
|
str r10, [r6]
|
|
|
|
/*
|
|
* Call board-specific lowlevel init.
|
|
* That MUST be present and THAT returns
|
|
* back to arch calling code with "mov pc, lr."
|
|
*/
|
|
b dv_board_init
|
|
|
|
.ltorg
|
|
|
|
_PINMUX0:
|
|
.word 0x01c40000 /* Device Configuration Registers */
|
|
_PINMUX1:
|
|
.word 0x01c40004 /* Device Configuration Registers */
|
|
|
|
_DEV_SETTING:
|
|
.word 0x00000c1f
|
|
|
|
WAITCFG:
|
|
.word 0x01e00004
|
|
WAITCFG_VAL:
|
|
.word 0
|
|
ACFG3:
|
|
.word 0x01e00014
|
|
ACFG3_VAL:
|
|
.word 0x3ffffffd
|
|
ACFG4:
|
|
.word 0x01e00018
|
|
ACFG4_VAL:
|
|
.word 0x3ffffffd
|
|
ACFG5:
|
|
.word 0x01e0001c
|
|
ACFG5_VAL:
|
|
.word 0x3ffffffd
|
|
|
|
MDCTL_DDR2:
|
|
.word 0x01c41a34
|
|
MDSTAT_DDR2:
|
|
.word 0x01c41834
|
|
|
|
PTCMD:
|
|
.word 0x01c41120
|
|
PTSTAT:
|
|
.word 0x01c41128
|
|
|
|
EINT_ENABLE0:
|
|
.word 0x01c48018
|
|
EINT_ENABLE1:
|
|
.word 0x01c4801c
|
|
|
|
PSC_FLAG_CLEAR:
|
|
.word 0xffffffe0
|
|
PSC_GEM_FLAG_CLEAR:
|
|
.word 0xfffffeff
|
|
|
|
/* DDR2 MMR & CONFIGURATION VALUES, 162 MHZ clock */
|
|
DDRCTL:
|
|
.word 0x200000e4
|
|
DDRCTL_VAL:
|
|
.word 0x50006405
|
|
SDREF:
|
|
.word 0x2000000c
|
|
SDREF_VAL:
|
|
.word 0x000005c3
|
|
SDCFG:
|
|
.word 0x20000008
|
|
SDCFG_VAL:
|
|
#ifdef DDR_4BANKS
|
|
.word 0x00178622
|
|
#elif defined DDR_8BANKS
|
|
.word 0x00178632
|
|
#else
|
|
#error "Unknown DDR configuration!!!"
|
|
#endif
|
|
SDTIM0:
|
|
.word 0x20000010
|
|
SDTIM0_VAL_162MHz:
|
|
.word 0x28923211
|
|
SDTIM1:
|
|
.word 0x20000014
|
|
SDTIM1_VAL_162MHz:
|
|
.word 0x0016c722
|
|
VTPIOCR:
|
|
.word 0x200000f0 /* VTP IO Control register */
|
|
DDRVTPR:
|
|
.word 0x01c42030 /* DDR VPTR MMR */
|
|
VTP_MMR0:
|
|
.word 0x201f
|
|
VTP_MMR1:
|
|
.word 0xa01f
|
|
DFT_ENABLE:
|
|
.word 0x01c4004c
|
|
VTP_LOCK_COUNT:
|
|
.word 0x5b0
|
|
VTP_MASK:
|
|
.word 0xffffdfff
|
|
VTP_RECAL:
|
|
.word 0x08000
|
|
VTP_EN:
|
|
.word 0x02000
|
|
CFGTEST:
|
|
.word 0x80010000
|
|
MASK_VAL:
|
|
.word 0x00000fff
|
|
|
|
/* GEM Power Up & LPSC Control Register */
|
|
MDCTL_GEM:
|
|
.word 0x01c41a9c
|
|
MDSTAT_GEM:
|
|
.word 0x01c4189c
|
|
|
|
/* For WDT reset chip bug */
|
|
P1394:
|
|
.word 0x01c41a20
|
|
|
|
PLL_CLKSRC_MASK:
|
|
.word 0xfffffeff /* Mask the Clock Mode bit */
|
|
PLL_ENSRC_MASK:
|
|
.word 0xffffffdf /* Select the PLLEN source */
|
|
PLL_BYPASS_MASK:
|
|
.word 0xfffffffe /* Put the PLL in BYPASS */
|
|
PLL_RESET_MASK:
|
|
.word 0xfffffff7 /* Put the PLL in Reset Mode */
|
|
PLL_PWRUP_MASK:
|
|
.word 0xfffffffd /* PLL Power up Mask Bit */
|
|
PLL_DISABLE_ENABLE_MASK:
|
|
.word 0xffffffef /* Enable the PLL from Disable */
|
|
PLL_LOCK_COUNT:
|
|
.word 0x2000
|
|
|
|
/* PLL1-SYSTEM PLL MMRs */
|
|
PLL1_CTL:
|
|
.word 0x01c40900
|
|
PLL1_PLLM:
|
|
.word 0x01c40910
|
|
|
|
/* PLL2-SYSTEM PLL MMRs */
|
|
PLL2_CTL:
|
|
.word 0x01c40d00
|
|
PLL2_PLLM:
|
|
.word 0x01c40d10
|
|
PLL2_DIV1:
|
|
.word 0x01c40d18
|
|
PLL2_DIV2:
|
|
.word 0x01c40d1c
|
|
PLL2_PLLCMD:
|
|
.word 0x01c40d38
|
|
PLL2_PLLSTAT:
|
|
.word 0x01c40d3c
|
|
PLL2_DIV_MASK:
|
|
.word 0xffff7fff
|
|
|
|
MMARG_BRF0:
|
|
.word 0x01c42010 /* BRF margin mode 0 (R/W)*/
|
|
MMARG_BRF0_VAL:
|
|
.word 0x00444400
|
|
|
|
DDR2_START_ADDR:
|
|
.word 0x80000000
|
|
DUMMY_VAL:
|
|
.word 0xa55aa55a
|
|
#else /* CONFIG_SOC_DM644X */
|
|
mov pc, lr
|
|
#endif
|