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
"vscode:/vscode.git/clone" did not exist on "4950bc6164a40ba506d091aacdce73ff076c5776"
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