Browse Source

Merge "feat(versal): deprecate build time arg VERSAL_PLATFORM" into integration

pull/2005/merge
Joanna Farley 3 months ago
committed by TrustedFirmware Code Review
parent
commit
2e1db2b4c7
  1. 10
      docs/plat/xilinx-versal.rst
  2. 59
      plat/xilinx/versal/aarch64/versal_common.c
  3. 42
      plat/xilinx/versal/bl31_versal_setup.c
  4. 4
      plat/xilinx/versal/include/plat_private.h
  5. 36
      plat/xilinx/versal/include/versal_def.h
  6. 7
      plat/xilinx/versal/platform.mk

10
docs/plat/xilinx-versal.rst

@ -14,11 +14,6 @@ To build:
make RESET_TO_BL31=1 CROSS_COMPILE=aarch64-none-elf- PLAT=versal bl31
```
To build ATF for different platform (supported are "silicon"(default) and "versal_virt")
```bash
make RESET_TO_BL31=1 CROSS_COMPILE=aarch64-none-elf- PLAT=versal VERSAL_PLATFORM=versal_virt bl31
```
To build bl32 TSP you have to rebuild bl31 too
```bash
make CROSS_COMPILE=aarch64-none-elf- PLAT=versal SPD=tspd RESET_TO_BL31=1 bl31 bl32
@ -51,11 +46,6 @@ Xilinx Versal platform specific build options
- `pl011`, `pl011_0`: ARM pl011 UART 0
- `pl011_1` : ARM pl011 UART 1
* `VERSAL_PLATFORM`: Select the platform. Options:
- `versal_virt` : Versal Virtual platform
- `spp_itr6` : SPP ITR6
- `emu_itr6` : EMU ITR6
* `CPU_PWRDWN_SGI`: Select the SGI for triggering CPU power down request to
secondary cores on receiving power down callback from
firmware. Options:

59
plat/xilinx/versal/aarch64/versal_common.c

@ -1,12 +1,11 @@
/*
* Copyright (c) 2018-2020, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
* Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <common/debug.h>
#include <drivers/generic_delay_timer.h>
#include <lib/mmio.h>
#include <lib/xlat_tables/xlat_tables_v2.h>
#include <plat/common/platform.h>
@ -18,7 +17,7 @@
#include <versal_def.h>
uint32_t platform_id, platform_version;
uint32_t cpu_clock = VERSAL_CPU_CLOCK;
uint32_t cpu_clock;
/*
* Table of regions to map using the MMU.
@ -39,19 +38,10 @@ const mmap_region_t *plat_get_mmap(void)
return plat_versal_mmap;
}
static void versal_print_platform_name(void)
{
NOTICE("TF-A running on %s\n", PLATFORM_NAME);
}
void versal_config_setup(void)
{
/* Configure IPI data for versal */
versal_ipi_config_table_init();
versal_print_platform_name();
generic_delay_timer_init();
}
void board_detection(void)
@ -70,7 +60,50 @@ void board_detection(void)
platform_version = FIELD_GET(PLATFORM_VERSION_MASK, plat_info[1]);
}
const char *board_name_decode(void)
{
const char *platform;
switch (platform_id) {
case VERSAL_SPP:
platform = "IPP";
break;
case VERSAL_EMU:
platform = "EMU";
break;
case VERSAL_QEMU:
platform = "QEMU";
break;
case VERSAL_SILICON:
platform = "SILICON";
break;
default:
platform = "unknown";
}
return platform;
}
uint32_t get_uart_clk(void)
{
return UART_CLOCK;
uint32_t uart_clock;
switch (platform_id) {
case VERSAL_SPP:
uart_clock = 25000000;
break;
case VERSAL_EMU:
uart_clock = 212000;
break;
case VERSAL_QEMU:
uart_clock = 25000000;
break;
case VERSAL_SILICON:
uart_clock = 100000000;
break;
default:
panic();
}
return uart_clock;
}

42
plat/xilinx/versal/bl31_versal_setup.c

@ -1,7 +1,7 @@
/*
* Copyright (c) 2018-2024, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
* Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
* Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -12,6 +12,7 @@
#include <bl31/bl31.h>
#include <common/bl_common.h>
#include <common/debug.h>
#include <drivers/generic_delay_timer.h>
#include <lib/mmio.h>
#include <lib/xlat_tables/xlat_tables_v2.h>
#include <plat/common/platform.h>
@ -73,22 +74,41 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
enum pm_ret_status ret_status;
uint64_t addr[HANDOFF_PARAMS_MAX_SIZE];
set_cnt_freq();
setup_console();
/* Initialize the platform config for future decision making */
versal_config_setup();
/* Get platform related information */
board_detection();
/*
* Do initial security configuration to allow DRAM/device access. On
* Base VERSAL only DRAM security is programmable (via TrustZone), but
* other platforms might have more programmable security devices
* present.
*/
versal_config_setup();
/* Initialize the platform config for future decision making */
board_detection();
switch (platform_id) {
case VERSAL_SPP:
cpu_clock = 2720000;
break;
case VERSAL_EMU:
cpu_clock = 212000;
break;
case VERSAL_QEMU:
/* Random values now */
cpu_clock = 2720000;
break;
case VERSAL_SILICON:
cpu_clock = 100000000;
break;
default:
panic();
}
set_cnt_freq();
generic_delay_timer_init();
setup_console();
NOTICE("TF-A running on %s %d\n", board_name_decode(), platform_version);
/* Populate common information for BL32 and BL33 */
SET_PARAM_HEAD(&bl32_image_ep_info, PARAM_EP, VERSION_1, 0);

4
plat/xilinx/versal/include/plat_private.h

@ -1,7 +1,7 @@
/*
* Copyright (c) 2018-2019, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
* Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
* Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -25,6 +25,8 @@ const mmap_region_t *plat_get_mmap(void);
extern uint32_t cpu_clock, platform_id, platform_version;
void board_detection(void);
const char *board_name_decode(void);
void plat_versal_gic_driver_init(void);
void plat_versal_gic_init(void);
void plat_versal_gic_cpuif_enable(void);

36
plat/xilinx/versal/include/versal_def.h

@ -1,7 +1,7 @@
/*
* Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
* Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
* Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -25,13 +25,11 @@
#define CONSOLE_IS(con) (VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
/* List all supported platforms */
#define VERSAL_PLATFORM_ID_versal_virt 1
#define VERSAL_PLATFORM_ID_spp_itr6 2
#define VERSAL_PLATFORM_ID_emu_itr6 3
#define VERSAL_PLATFORM_ID_silicon 4
#define VERSAL_PLATFORM_IS(con) (VERSAL_PLATFORM_ID_ ## con == VERSAL_PLATFORM)
/* List of platforms */
#define VERSAL_SILICON U(0)
#define VERSAL_SPP U(1)
#define VERSAL_EMU U(2)
#define VERSAL_QEMU U(3)
/* Firmware Image Package */
#define VERSAL_PRIMARY_CPU 0
@ -75,27 +73,7 @@
/*******************************************************************************
* Platform related constants
******************************************************************************/
#if VERSAL_PLATFORM_IS(versal_virt)
# define PLATFORM_NAME "Versal Virt"
# define UART_CLOCK 25000000
# define UART_BAUDRATE 115200
# define VERSAL_CPU_CLOCK 2720000
#elif VERSAL_PLATFORM_IS(silicon)
# define PLATFORM_NAME "Versal Silicon"
# define UART_CLOCK 100000000
# define UART_BAUDRATE 115200
# define VERSAL_CPU_CLOCK 100000000
#elif VERSAL_PLATFORM_IS(spp_itr6)
# define PLATFORM_NAME "SPP ITR6"
# define UART_CLOCK 25000000
# define UART_BAUDRATE 115200
# define VERSAL_CPU_CLOCK 2720000
#elif VERSAL_PLATFORM_IS(emu_itr6)
# define PLATFORM_NAME "EMU ITR6"
# define UART_CLOCK 212000
# define UART_BAUDRATE 9600
# define VERSAL_CPU_CLOCK 212000
#endif
#define UART_BAUDRATE 115200
/* Access control register defines */
#define ACTLR_EL3_L2ACTLR_BIT (1 << 6)

7
plat/xilinx/versal/platform.mk

@ -1,5 +1,5 @@
# Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
# Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
# Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
@ -44,8 +44,9 @@ ifdef IPI_CRC_CHECK
$(eval $(call add_define,IPI_CRC_CHECK))
endif
VERSAL_PLATFORM ?= silicon
$(eval $(call add_define_val,VERSAL_PLATFORM,VERSAL_PLATFORM_ID_${VERSAL_PLATFORM}))
ifdef VERSAL_PLATFORM
$(warning "VERSAL_PLATFORM has been deprecated")
endif
ifdef XILINX_OF_BOARD_DTB_ADDR
$(eval $(call add_define,XILINX_OF_BOARD_DTB_ADDR))

Loading…
Cancel
Save