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
a43179a6
Commit
a43179a6
authored
Jul 07, 2021
by
Madhukar Pappireddy
Committed by
TrustedFirmware Code Review
Jul 07, 2021
Browse files
Merge "feat(plat/zynqmp): extend DT description by TF-A" into integration
parents
2cd96329
0a8143dd
Changes
3
Hide whitespace changes
Inline
Side-by-side
plat/xilinx/zynqmp/bl31_zynqmp_setup.c
View file @
a43179a6
...
@@ -20,6 +20,10 @@
...
@@ -20,6 +20,10 @@
#include <plat_private.h>
#include <plat_private.h>
#include <zynqmp_def.h>
#include <zynqmp_def.h>
#include <common/fdt_fixup.h>
#include <common/fdt_wrappers.h>
#include <libfdt.h>
static
entry_point_info_t
bl32_image_ep_info
;
static
entry_point_info_t
bl32_image_ep_info
;
static
entry_point_info_t
bl33_image_ep_info
;
static
entry_point_info_t
bl33_image_ep_info
;
...
@@ -159,8 +163,55 @@ static uint64_t rdo_el3_interrupt_handler(uint32_t id, uint32_t flags,
...
@@ -159,8 +163,55 @@ static uint64_t rdo_el3_interrupt_handler(uint32_t id, uint32_t flags,
}
}
#endif
#endif
#if (BL31_LIMIT < PLAT_DDR_LOWMEM_MAX)
static
void
prepare_dtb
(
void
)
{
void
*
dtb
=
(
void
*
)
XILINX_OF_BOARD_DTB_ADDR
;
int
ret
;
/* Return if no device tree is detected */
if
(
fdt_check_header
(
dtb
)
!=
0
)
{
NOTICE
(
"Can't read DT at 0x%p
\n
"
,
dtb
);
return
;
}
ret
=
fdt_open_into
(
dtb
,
dtb
,
XILINX_OF_BOARD_DTB_MAX_SIZE
);
if
(
ret
<
0
)
{
ERROR
(
"Invalid Device Tree at %p: error %d
\n
"
,
dtb
,
ret
);
return
;
}
if
(
dt_add_psci_node
(
dtb
))
{
ERROR
(
"Failed to add PSCI Device Tree node
\n
"
);
return
;
}
if
(
dt_add_psci_cpu_enable_methods
(
dtb
))
{
ERROR
(
"Failed to add PSCI cpu enable methods in Device Tree
\n
"
);
return
;
}
/* Reserve memory used by Trusted Firmware. */
if
(
fdt_add_reserved_memory
(
dtb
,
"tf-a"
,
BL31_BASE
,
BL31_LIMIT
-
BL31_BASE
))
{
WARN
(
"Failed to add reserved memory nodes to DT.
\n
"
);
}
ret
=
fdt_pack
(
dtb
);
if
(
ret
<
0
)
{
ERROR
(
"Failed to pack Device Tree at %p: error %d
\n
"
,
dtb
,
ret
);
}
clean_dcache_range
((
uintptr_t
)
dtb
,
fdt_blob_size
(
dtb
));
INFO
(
"Changed device tree to advertise PSCI and reserved memories.
\n
"
);
}
#endif
void
bl31_platform_setup
(
void
)
void
bl31_platform_setup
(
void
)
{
{
#if (BL31_LIMIT < PLAT_DDR_LOWMEM_MAX)
prepare_dtb
();
#endif
/* Initialize the gic cpu and distributor interfaces */
/* Initialize the gic cpu and distributor interfaces */
plat_arm_gic_driver_init
();
plat_arm_gic_driver_init
();
plat_arm_gic_init
();
plat_arm_gic_init
();
...
@@ -191,6 +242,10 @@ void bl31_plat_arch_setup(void)
...
@@ -191,6 +242,10 @@ void bl31_plat_arch_setup(void)
const
mmap_region_t
bl_regions
[]
=
{
const
mmap_region_t
bl_regions
[]
=
{
#if (BL31_LIMIT < PLAT_DDR_LOWMEM_MAX)
MAP_REGION_FLAT
(
XILINX_OF_BOARD_DTB_ADDR
,
XILINX_OF_BOARD_DTB_MAX_SIZE
,
MT_MEMORY
|
MT_RW
|
MT_NS
),
#endif
MAP_REGION_FLAT
(
BL31_BASE
,
BL31_END
-
BL31_BASE
,
MAP_REGION_FLAT
(
BL31_BASE
,
BL31_END
-
BL31_BASE
,
MT_MEMORY
|
MT_RW
|
MT_SECURE
),
MT_MEMORY
|
MT_RW
|
MT_SECURE
),
MAP_REGION_FLAT
(
BL_CODE_BASE
,
BL_CODE_END
-
BL_CODE_BASE
,
MAP_REGION_FLAT
(
BL_CODE_BASE
,
BL_CODE_END
-
BL_CODE_BASE
,
...
...
plat/xilinx/zynqmp/include/platform_def.h
View file @
a43179a6
...
@@ -83,9 +83,17 @@
...
@@ -83,9 +83,17 @@
/*******************************************************************************
/*******************************************************************************
* Platform specific page table and MMU setup constants
* Platform specific page table and MMU setup constants
******************************************************************************/
******************************************************************************/
#define XILINX_OF_BOARD_DTB_ADDR 0x100000
#define XILINX_OF_BOARD_DTB_MAX_SIZE 0x200000
#define PLAT_DDR_LOWMEM_MAX 0x80000000
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
#if (BL31_LIMIT < PLAT_DDR_LOWMEM_MAX)
#define MAX_MMAP_REGIONS 8
#else
#define MAX_MMAP_REGIONS 7
#define MAX_MMAP_REGIONS 7
#endif
#define MAX_XLAT_TABLES 5
#define MAX_XLAT_TABLES 5
#define CACHE_WRITEBACK_SHIFT 6
#define CACHE_WRITEBACK_SHIFT 6
...
...
plat/xilinx/zynqmp/platform.mk
View file @
a43179a6
...
@@ -63,6 +63,7 @@ PLAT_INCLUDES := -Iinclude/plat/arm/common/ \
...
@@ -63,6 +63,7 @@ PLAT_INCLUDES := -Iinclude/plat/arm/common/ \
-Iplat
/xilinx/zynqmp/include/
\
-Iplat
/xilinx/zynqmp/include/
\
-Iplat
/xilinx/zynqmp/pm_service/
\
-Iplat
/xilinx/zynqmp/pm_service/
\
include
lib/libfdt/libfdt.mk
# Include GICv2 driver files
# Include GICv2 driver files
include
drivers/arm/gic/v2/gicv2.mk
include
drivers/arm/gic/v2/gicv2.mk
...
@@ -94,6 +95,8 @@ BL31_SOURCES += drivers/arm/cci/cci.c \
...
@@ -94,6 +95,8 @@ BL31_SOURCES += drivers/arm/cci/cci.c \
lib/cpus/aarch64/aem_generic.S
\
lib/cpus/aarch64/aem_generic.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a53.S
\
plat/common/plat_psci_common.c
\
plat/common/plat_psci_common.c
\
common/fdt_fixup.c
\
${LIBFDT_SRCS}
\
plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c
\
plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c
\
plat/xilinx/common/pm_service/pm_ipi.c
\
plat/xilinx/common/pm_service/pm_ipi.c
\
plat/xilinx/common/plat_startup.c
\
plat/xilinx/common/plat_startup.c
\
...
...
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