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
c19a4e6b
"vscode:/vscode.git/clone" did not exist on "f88b6bdc5109ba09e45f4c19bc3ea14e51794cae"
Commit
c19a4e6b
authored
Sep 02, 2020
by
Alexei Fedorov
Committed by
TrustedFirmware Code Review
Sep 02, 2020
Browse files
Merge "plat/arm: Get the base address of nv-counters from device tree" into integration
parents
ee99356b
14d095c3
Changes
5
Show whitespace changes
Inline
Side-by-side
include/plat/arm/common/fconf_nv_cntr_getter.h
0 → 100644
View file @
c19a4e6b
/*
* Copyright (c) 2020, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef FCONF_NV_CNTR_GETTER_H
#define FCONF_NV_CNTR_GETTER_H
#include <common/nv_cntr_ids.h>
#include <lib/fconf/fconf.h>
#define cot__nv_cntr_addr_getter(id) nv_cntr_base_addr[id]
extern
uintptr_t
nv_cntr_base_addr
[
MAX_NV_CTR_IDS
];
#endif
/* FCONF_NV_CNTR_GETTER_H */
plat/arm/board/common/board_arm_trusted_boot.c
View file @
c19a4e6b
...
@@ -12,7 +12,9 @@
...
@@ -12,7 +12,9 @@
#include <drivers/arm/cryptocell/cc_rotpk.h>
#include <drivers/arm/cryptocell/cc_rotpk.h>
#include <drivers/delay_timer.h>
#include <drivers/delay_timer.h>
#include <lib/cassert.h>
#include <lib/cassert.h>
#include <lib/fconf/fconf.h>
#include <plat/arm/common/plat_arm.h>
#include <plat/arm/common/plat_arm.h>
#include <plat/arm/common/fconf_nv_cntr_getter.h>
#include <plat/common/common_def.h>
#include <plat/common/common_def.h>
#include <plat/common/platform.h>
#include <plat/common/platform.h>
#include <platform_def.h>
#include <platform_def.h>
...
@@ -29,6 +31,16 @@
...
@@ -29,6 +31,16 @@
#endif
#endif
#endif
#endif
#if COT_DESC_IN_DTB && defined(IMAGE_BL2)
uintptr_t
nv_cntr_base_addr
[
MAX_NV_CTR_IDS
];
#else
uintptr_t
nv_cntr_base_addr
[
MAX_NV_CTR_IDS
]
=
{
TFW_NVCTR_BASE
,
NTFW_CTR_BASE
};
#endif
/* Weak definition may be overridden in specific platform */
/* Weak definition may be overridden in specific platform */
#pragma weak plat_get_nv_ctr
#pragma weak plat_get_nv_ctr
#pragma weak plat_set_nv_ctr
#pragma weak plat_set_nv_ctr
...
@@ -183,9 +195,11 @@ int plat_get_nv_ctr(void *cookie, unsigned int *nv_ctr)
...
@@ -183,9 +195,11 @@ int plat_get_nv_ctr(void *cookie, unsigned int *nv_ctr)
oid
=
(
const
char
*
)
cookie
;
oid
=
(
const
char
*
)
cookie
;
if
(
strcmp
(
oid
,
TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
if
(
strcmp
(
oid
,
TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
nv_ctr_addr
=
(
uint32_t
*
)
TFW_NVCTR_BASE
;
nv_ctr_addr
=
(
uint32_t
*
)
FCONF_GET_PROPERTY
(
cot
,
nv_cntr_addr
,
TRUSTED_NV_CTR_ID
);
}
else
if
(
strcmp
(
oid
,
NON_TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
}
else
if
(
strcmp
(
oid
,
NON_TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
nv_ctr_addr
=
(
uint32_t
*
)
NTFW_CTR_BASE
;
nv_ctr_addr
=
(
uint32_t
*
)
FCONF_GET_PROPERTY
(
cot
,
nv_cntr_addr
,
NON_TRUSTED_NV_CTR_ID
);
}
else
{
}
else
{
return
1
;
return
1
;
}
}
...
...
plat/arm/board/fvp/fvp_trusted_boot.c
View file @
c19a4e6b
...
@@ -9,7 +9,9 @@
...
@@ -9,7 +9,9 @@
#include <string.h>
#include <string.h>
#include <lib/mmio.h>
#include <lib/mmio.h>
#include <lib/fconf/fconf.h>
#include <plat/arm/common/plat_arm.h>
#include <plat/arm/common/plat_arm.h>
#include <plat/arm/common/fconf_nv_cntr_getter.h>
#include <plat/common/platform.h>
#include <plat/common/platform.h>
#include <platform_def.h>
#include <platform_def.h>
#include <tools_share/tbbr_oid.h>
#include <tools_share/tbbr_oid.h>
...
@@ -50,9 +52,11 @@ int plat_set_nv_ctr(void *cookie, unsigned int nv_ctr)
...
@@ -50,9 +52,11 @@ int plat_set_nv_ctr(void *cookie, unsigned int nv_ctr)
oid
=
(
const
char
*
)
cookie
;
oid
=
(
const
char
*
)
cookie
;
if
(
strcmp
(
oid
,
TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
if
(
strcmp
(
oid
,
TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
nv_ctr_addr
=
TFW_NVCTR_BASE
;
nv_ctr_addr
=
FCONF_GET_PROPERTY
(
cot
,
nv_cntr_addr
,
TRUSTED_NV_CTR_ID
);
}
else
if
(
strcmp
(
oid
,
NON_TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
}
else
if
(
strcmp
(
oid
,
NON_TRUSTED_FW_NVCOUNTER_OID
)
==
0
)
{
nv_ctr_addr
=
NTFW_CTR_BASE
;
nv_ctr_addr
=
FCONF_GET_PROPERTY
(
cot
,
nv_cntr_addr
,
NON_TRUSTED_NV_CTR_ID
);
}
else
{
}
else
{
return
1
;
return
1
;
}
}
...
...
plat/arm/board/fvp/platform.mk
View file @
c19a4e6b
...
@@ -168,6 +168,9 @@ BL2_SOURCES += drivers/arm/sp805/sp805.c \
...
@@ -168,6 +168,9 @@ BL2_SOURCES += drivers/arm/sp805/sp805.c \
${FVP_SECURITY_SOURCES}
${FVP_SECURITY_SOURCES}
ifeq
(${COT_DESC_IN_DTB},1)
BL2_SOURCES
+=
plat/arm/common/fconf/fconf_nv_cntr_getter.c
endif
ifeq
(${BL2_AT_EL3},1)
ifeq
(${BL2_AT_EL3},1)
BL2_SOURCES
+=
plat/arm/board/fvp/
${ARCH}
/fvp_helpers.S
\
BL2_SOURCES
+=
plat/arm/board/fvp/
${ARCH}
/fvp_helpers.S
\
...
...
plat/arm/common/fconf/fconf_nv_cntr_getter.c
0 → 100644
View file @
c19a4e6b
/*
* Copyright (c) 2020, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <assert.h>
#include <common/debug.h>
#include <common/fdt_wrappers.h>
#include <libfdt.h>
#include <plat/arm/common/fconf_nv_cntr_getter.h>
/*******************************************************************************
* fconf_populate_cot_descs() - Populate available nv-counters and update global
* structure.
* @config[in]: Pointer to the device tree blob in memory
*
* Return 0 on success or an error value otherwise.
******************************************************************************/
static
int
fconf_populate_nv_cntrs
(
uintptr_t
config
)
{
int
rc
,
node
,
child
;
uint32_t
id
;
uintptr_t
reg
;
/* As libfdt uses void *, we can't avoid this cast */
const
void
*
dtb
=
(
void
*
)
config
;
const
char
*
compatible_str
=
"arm, non-volatile-counter"
;
node
=
fdt_node_offset_by_compatible
(
dtb
,
-
1
,
compatible_str
);
if
(
node
<
0
)
{
ERROR
(
"FCONF: Can't find %s compatible in node
\n
"
,
compatible_str
);
return
node
;
}
fdt_for_each_subnode
(
child
,
dtb
,
node
)
{
rc
=
fdt_read_uint32
(
dtb
,
child
,
"id"
,
&
id
);
if
(
rc
<
0
)
{
ERROR
(
"FCONF: Can't find %s property in node
\n
"
,
"id"
);
return
rc
;
}
assert
(
id
<
MAX_NV_CTR_IDS
);
rc
=
fdt_get_reg_props_by_index
(
dtb
,
child
,
0
,
&
reg
,
NULL
);
if
(
rc
<
0
)
{
ERROR
(
"FCONF: Can't find %s property in node
\n
"
,
"reg"
);
return
rc
;
}
nv_cntr_base_addr
[
id
]
=
reg
;
}
return
0
;
}
FCONF_REGISTER_POPULATOR
(
TB_FW
,
nv_cntrs
,
fconf_populate_nv_cntrs
);
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