Skip to content

Commit

Permalink
lib: generic: xlnx: Enable CMake handling for System Device Tree Flow
Browse files Browse the repository at this point in the history
For AMD-Xilinx tooling, there is a new System Device Tree  (SDT) BSP
with different symbols for GIC than the classic BSP. This causes issues
when linking Libmetal against the SDT Flow BSP. Note that there is a
planned deprecation of the classic BSP.

For AMD-Xilinx System Device Tree (SDT) Flow, one of the files provided
by BSP is bspconfig.h. This file provides reference to the symbols that
describe GIC Device ID and GIC distributor Base Address. AMD-Xilinx
tools that use the SDT Flow BSP will provide symbol 'SDT' to signal that
the SDT Flow BSP is present. If SDT symbol is present then the Libmetal
build will include the new header "lib/system/generic/xlnx/sdt.h" to
preserve library build.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
  • Loading branch information
bentheredonethat committed Dec 14, 2023
1 parent f3f365d commit b81fa1e
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/system/generic/xlnx/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,10 @@ collect (PROJECT_LIB_HEADERS sys.h)

collect (PROJECT_LIB_SOURCES irq.c)

include(CheckSymbolExists)
check_symbol_exists(SDT "bspconfig.h" HAS_SDT)
if (HAS_SDT)
collect (PROJECT_LIB_HEADERS sdt.h)
endif()

# vim: expandtab:ts=2:sw=2:smartindent
27 changes: 27 additions & 0 deletions lib/system/generic/xlnx/sdt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/

/*
* @file generic/xlnx/sdt.h
* @brief Xilinx-AMD Specific symbols for System Device Tree Flow
*/

#ifndef __METAL_GENERIC_SYS_XLNX_SDT_H__
#define __METAL_GENERIC_SYS_XLNX_SDT_H__

/* The Xilinx-AMD System Device Tree (SDT) Flow BSP provides this file. */
#ifdef SDT
#include "bspconfig.h"
#endif

#ifdef XPAR_SCUGIC_SINGLE_DEVICE_ID
#define XPAR_SCUGIC_0_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID
#endif

#ifdef XPAR_SCUGIC_DIST_BASEADDR
#define XPAR_SCUGIC_0_DIST_BASEADDR XPAR_SCUGIC_DIST_BASEADDR
#endif
#endif /* __METAL_GENERIC_SYS_XLNX_SDT_H__ */
5 changes: 5 additions & 0 deletions lib/system/generic/xlnx/sys.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
* Copyright (C) 2023, Advanced Micro Devices, Inc.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
Expand Down Expand Up @@ -28,6 +29,10 @@
#include <xil_exception.h>
#include <xparameters.h>

#ifdef SDT
#include <metal/system/generic/xlnx/sdt.h>
#endif

#ifndef __METAL_GENERIC_XLNX_SYS__H__
#define __METAL_GENERIC_XLNX_SYS__H__

Expand Down

0 comments on commit b81fa1e

Please sign in to comment.