Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
7e2d659e
Commit
7e2d659e
authored
Mar 26, 2015
by
achingupta
Browse files
Merge pull request #274 from sandrine-bailleux/sb/juno-r1
Add support for Juno r1 in the platform reset handler
parents
93713e7f
9454d316
Changes
2
Hide whitespace changes
Inline
Side-by-side
plat/juno/aarch64/plat_helpers.S
View file @
7e2d659e
...
@@ -112,43 +112,88 @@ func platform_get_core_pos
...
@@ -112,43 +112,88 @@ func platform_get_core_pos
func
platform_mem_init
func
platform_mem_init
ret
ret
/
*
-----------------------------------------------------
/
*
-----------------------------------------------------
---------------
*
void
plat_reset_handler
(
void
)
;
*
void
plat_reset_handler
(
void
)
;
*
*
*
Before
adding
code
in
this
function
,
refer
to
the
*
Before
adding
code
in
this
function
,
refer
to
the
guidelines
in
*
guidelines
in
docs
/
firmware
-
design
.
md
to
determine
*
docs
/
firmware
-
design
.
md
to
determine
whether
the
code
should
reside
*
whether
the
code
should
reside
within
the
*
within
the
FIRST_RESET_HANDLER_CALL
block
or
not
.
*
FIRST_RESET_HANDLER_CALL
block
or
not
.
*
*
*
Implement
workaround
for
defect
id
831273
by
enabling
*
For
Juno
r0
:
*
an
event
stream
every
65536
cycles
and
set
the
L2
RAM
*
-
Implement
workaround
for
defect
id
831273
by
enabling
an
event
*
latencies
for
Cortex
-
A57
.
This
code
is
included
only
*
stream
every
65536
cycles
.
*
when
FIRST_RESET_HANDLER_CALL
is
defined
since
it
*
-
Set
the
L2
Data
RAM
latency
to
2
(
i
.
e
.
3
cycles
)
for
Cortex
-
A57
*
should
be
executed
only
during
BL1
.
*
-
Set
the
L2
Tag
RAM
latency
to
2
(
i
.
e
.
3
cycles
)
for
Cortex
-
A57
*
-----------------------------------------------------
*
*
For
Juno
r1
:
*
-
Set
the
L2
Data
RAM
latency
to
2
(
i
.
e
.
3
cycles
)
for
Cortex
-
A57
*
Note
that
:
*
-
The
default
value
for
the
L2
Tag
RAM
latency
for
Cortex
-
A57
is
*
suitable
.
*
-
Defect
#
831273
doesn
't affect Juno r1.
*
*
This
code
is
included
only
when
FIRST_RESET_HANDLER_CALL
is
defined
*
since
it
should
be
executed
only
during
BL1
.
*
--------------------------------------------------------------------
*/
*/
func
plat_reset_handler
func
plat_reset_handler
#ifdef FIRST_RESET_HANDLER_CALL
#ifdef FIRST_RESET_HANDLER_CALL
/
*
Read
the
MIDR_EL1
*/
/
*
--------------------------------------------------------------------
*
Determine
whether
this
code
is
running
on
Juno
r0
or
Juno
r1
.
*
Keep
this
information
in
x2
.
*
--------------------------------------------------------------------
*/
/
*
Read
the
V2M
SYS_ID
register
*/
mov_imm
x0
,
(
VE_SYSREGS_BASE
+
V2M_SYS_ID
)
ldr
w1
,
[
x0
]
/
*
Extract
board
revision
from
the
SYS_ID
*/
ubfx
x1
,
x1
,
#
SYS_ID_REV_SHIFT
,
#
4
/
*
*
On
Juno
R0
:
x2
:
=
REV_JUNO_R0
-
1
=
0
*
On
Juno
R1
:
x2
:
=
REV_JUNO_R1
-
1
=
1
*/
sub
x2
,
x1
,
#
1
/
*
--------------------------------------------------------------------
*
Determine
whether
this
code
is
executed
on
a
Cortex
-
A53
or
on
a
*
Cortex
-
A57
core
.
*
--------------------------------------------------------------------
*/
mrs
x0
,
midr_el1
mrs
x0
,
midr_el1
ubfx
x1
,
x0
,
MIDR_PN_SHIFT
,
#
12
ubfx
x1
,
x0
,
MIDR_PN_SHIFT
,
#
12
cmp
w1
,
#((
CORTEX_A57_MIDR
>>
MIDR_PN_SHIFT
)
&
MIDR_PN_MASK
)
cmp
w1
,
#((
CORTEX_A57_MIDR
>>
MIDR_PN_SHIFT
)
&
MIDR_PN_MASK
)
b.ne
1
f
b.eq
A57
/
*
Nothing
needs
to
be
done
for
the
Cortex
-
A53
on
Juno
r1
*/
cbz
x2
,
apply_831273
ret
A57
:
/
*
--------------------------------------------------------------------
*
Cortex
-
A57
specific
settings
*
--------------------------------------------------------------------
*/
/
*
Change
the
L2
Data
and
Tag
Ram
latency
to
3
cycles
*/
/
*
Change
the
L2
Data
RAM
latency
to
3
cycles
*/
mov
x0
,
#(
L2_DATA_RAM_LATENCY_3_CYCLES
|
\
mov
x0
,
#
L2_DATA_RAM_LATENCY_3_CYCLES
(
L2_TAG_RAM_LATENCY_3_CYCLES
<<
\
cbnz
x2
,
apply_l2_ram_latencies
L2CTLR_TAG_RAM_LATENCY_SHIFT
))
/
*
On
Juno
r0
,
also
change
the
L2
Tag
RAM
latency
to
3
cycles
*/
orr
x0
,
x0
,
#(
L2_TAG_RAM_LATENCY_3_CYCLES
<<
L2CTLR_TAG_RAM_LATENCY_SHIFT
)
apply_l2_ram_latencies
:
msr
L2CTLR_EL1
,
x0
msr
L2CTLR_EL1
,
x0
1
:
/
*
Juno
r1
doesn
't suffer from defect #831273 */
/
*
---------------------------------------------
cbnz
x2
,
ret
*
Enable
the
event
stream
every
65536
cycles
*
---------------------------------------------
apply_831273
:
/
*
--------------------------------------------------------------------
*
On
Juno
r0
,
enable
the
event
stream
every
65536
cycles
*
--------------------------------------------------------------------
*/
*/
mov
x0
,
#(
0xf
<<
EVNTI_SHIFT
)
mov
x0
,
#(
0xf
<<
EVNTI_SHIFT
)
orr
x0
,
x0
,
#
EVNTEN_BIT
orr
x0
,
x0
,
#
EVNTEN_BIT
msr
CNTKCTL_EL1
,
x0
msr
CNTKCTL_EL1
,
x0
ret
:
isb
isb
#endif /* FIRST_RESET_HANDLER_CALL */
#endif /* FIRST_RESET_HANDLER_CALL */
ret
ret
plat/juno/juno_def.h
View file @
7e2d659e
...
@@ -122,10 +122,23 @@
...
@@ -122,10 +122,23 @@
#define SYS_CNTREAD_BASE 0x2a800000
#define SYS_CNTREAD_BASE 0x2a800000
#define SYS_TIMCTL_BASE 0x2a810000
#define SYS_TIMCTL_BASE 0x2a810000
/* V2M motherboard system registers & offsets */
/*
* Base memory address of the V2M-Juno motherboard APB system registers in the
* IOFPGA
*/
#define VE_SYSREGS_BASE 0x1c010000
#define VE_SYSREGS_BASE 0x1c010000
/* APB system registers in address offset order from the base memory address */
#define V2M_SYS_ID 0x0
#define V2M_SYS_LED 0x8
#define V2M_SYS_LED 0x8
/* V2M SYS_ID register bits */
#define SYS_ID_REV_SHIFT 28
#define SYS_ID_REV_MASK 0xf
/* Board revisions */
#define REV_JUNO_R0 0x1
/* Rev B */
#define REV_JUNO_R1 0x2
/* Rev C */
/*
/*
* V2M sysled bit definitions. The values written to this
* V2M sysled bit definitions. The values written to this
* register are defined in arch.h & runtime_svc.h. Only
* register are defined in arch.h & runtime_svc.h. Only
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment