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
71c074c5
Commit
71c074c5
authored
Jun 22, 2020
by
Olivier Deprez
Committed by
TrustedFirmware Code Review
Jun 22, 2020
Browse files
Merge "Tegra: introduce support for GICv3" into integration
parents
9935047b
5e1b83aa
Changes
2
Hide whitespace changes
Inline
Side-by-side
plat/nvidia/tegra/common/tegra_common.mk
View file @
71c074c5
...
...
@@ -14,6 +14,12 @@ PLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS}
COMMON_DIR
:=
plat/nvidia/tegra/common
# Include GICv3 driver files
include
drivers/arm/gic/v3/gicv3.mk
TEGRA_GICv3_SOURCES
:=
$(GICV3_SOURCES)
\
plat/common/plat_gicv3.c
\
${COMMON_DIR}
/tegra_gicv3.c
TEGRA_GICv2_SOURCES
:=
drivers/arm/gic/common/gic_common.c
\
drivers/arm/gic/v2/gicv2_main.c
\
drivers/arm/gic/v2/gicv2_helpers.c
\
...
...
plat/nvidia/tegra/common/tegra_gicv3.c
0 → 100644
View file @
71c074c5
/*
* Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <assert.h>
#include <common/bl_common.h>
#include <drivers/arm/gicv3.h>
#include <lib/utils.h>
#include <plat/common/platform.h>
#include <platform_def.h>
#include <tegra_private.h>
#include <tegra_def.h>
/* The GICv3 driver only needs to be initialized in EL3 */
static
uintptr_t
rdistif_base_addrs
[
PLATFORM_CORE_COUNT
];
static
unsigned
int
plat_tegra_mpidr_to_core_pos
(
unsigned
long
mpidr
)
{
return
(
unsigned
int
)
plat_core_pos_by_mpidr
(
mpidr
);
}
/******************************************************************************
* Tegra common helper to setup the GICv3 driver data.
*****************************************************************************/
void
tegra_gic_setup
(
const
interrupt_prop_t
*
interrupt_props
,
unsigned
int
interrupt_props_num
)
{
/*
* Tegra GIC configuration settings
*/
static
gicv3_driver_data_t
tegra_gic_data
;
/*
* Register Tegra GICv3 driver
*/
tegra_gic_data
.
gicd_base
=
TEGRA_GICD_BASE
;
tegra_gic_data
.
gicr_base
=
TEGRA_GICR_BASE
;
tegra_gic_data
.
rdistif_num
=
PLATFORM_CORE_COUNT
;
tegra_gic_data
.
rdistif_base_addrs
=
rdistif_base_addrs
;
tegra_gic_data
.
mpidr_to_core_pos
=
plat_tegra_mpidr_to_core_pos
;
tegra_gic_data
.
interrupt_props
=
interrupt_props
;
tegra_gic_data
.
interrupt_props_num
=
interrupt_props_num
;
gicv3_driver_init
(
&
tegra_gic_data
);
/* initialize the GICD and GICR */
tegra_gic_init
();
}
/******************************************************************************
* Tegra common helper to initialize the GICv3 only driver.
*****************************************************************************/
void
tegra_gic_init
(
void
)
{
gicv3_distif_init
();
gicv3_rdistif_init
(
plat_my_core_pos
());
gicv3_cpuif_enable
(
plat_my_core_pos
());
}
/******************************************************************************
* Tegra common helper to disable the GICv3 CPU interface
*****************************************************************************/
void
tegra_gic_cpuif_deactivate
(
void
)
{
gicv3_cpuif_disable
(
plat_my_core_pos
());
}
/******************************************************************************
* Tegra common helper to initialize the per cpu distributor interface
* in GICv3
*****************************************************************************/
void
tegra_gic_pcpu_init
(
void
)
{
gicv3_rdistif_init
(
plat_my_core_pos
());
gicv3_cpuif_enable
(
plat_my_core_pos
());
}
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