sof/scripts/set_xtensa_params.sh

162 lines
3.8 KiB
Bash

# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2023 Intel Corporation. All rights reserved.
# Because this is meant to be sourced
# shellcheck disable=SC2148
# shellcheck disable=SC2034
### XTENSA_ toolchain configuration shared across projects ###
# These variables are currently used in/by:
#
# - xtensa-build-all.sh (XTOS)
# - script/rebuild-testbench.sh
# - before Zephyr's `twister` or `west build`
#
# Not all variables are used in all use cases. Some are.
#
# Find some information about XTENSA_SYSTEM and XTENSA_CORE in
# ./scripts/xtensa-build-zephyr.py --help
#
# The variables used by Zephyr are duplicated in
# xtensa-build-zephyr.py, please keep in sync!
# To maximize reuse, keep this script very basic and minimal and don't
# `export`: leave which the decision for each variable to the caller.
# Sourced script argument $1 is a non-standard bash extension
[ -n "$1" ] || {
>&2 printf 'Missing platform argument\n'
return 1 # Not exit!
}
platform=$1
# If adding a new variable is required, avoid adding it to the mass
# duplication in this first, very verbose `case` statement. Prefer
# adding a new, smarter, per-variable `case` statement like the one for
# ZEPHYR_TOOLCHAIN_VARIANT below
PLATFORM="$platform"
case "$platform" in
# Intel
tgl)
PLATFORM="tgplp"
XTENSA_CORE="cavs2x_LX6HiFi3_2017_8"
HOST="xtensa-cnl-elf"
TOOLCHAIN_VER="RG-2017.8-linux"
HAVE_ROM='yes'
IPC4_CONFIG_OVERLAY="tigerlake_ipc4"
# default key for TGL
PLATFORM_PRIVATE_KEY="-D${SIGNING_TOOL}_PRIVATE_KEY=$SOF_TOP/keys/otc_private_key_3k.pem"
;;
tgl-h)
PLATFORM="tgph"
XTENSA_CORE="cavs2x_LX6HiFi3_2017_8"
HOST="xtensa-cnl-elf"
TOOLCHAIN_VER="RG-2017.8-linux"
HAVE_ROM='yes'
# default key for TGL
PLATFORM_PRIVATE_KEY="-D${SIGNING_TOOL}_PRIVATE_KEY=$SOF_TOP/keys/otc_private_key_3k.pem"
;;
mtl|lnl)
XTENSA_CORE="ace10_LX7HiFi4_2022_10"
TOOLCHAIN_VER="RI-2022.10-linux"
;;
ptl)
XTENSA_CORE="ace30_LX7HiFi4_PIF"
TOOLCHAIN_VER="RI-2022.10-linux"
;;
# NXP
imx8)
XTENSA_CORE="hifi4_nxp_v3_3_1_2_2017"
HOST="xtensa-imx-elf"
TOOLCHAIN_VER="RG-2017.8-linux"
;;
imx8x)
XTENSA_CORE="hifi4_nxp_v3_3_1_2_2017"
HOST="xtensa-imx-elf"
TOOLCHAIN_VER="RG-2017.8-linux"
;;
imx8m)
XTENSA_CORE="hifi4_mscale_v0_0_2_2017"
HOST="xtensa-imx8m-elf"
TOOLCHAIN_VER="RG-2017.8-linux"
;;
imx8ulp)
XTENSA_CORE="hifi4_nxp2_ulp_prod"
HOST="xtensa-imx8ulp-elf"
TOOLCHAIN_VER="RG-2017.8-linux"
;;
# AMD
rn)
PLATFORM="renoir"
XTENSA_CORE="ACP_3_1_001_PROD_2019_1"
HOST="xtensa-rn-elf"
TOOLCHAIN_VER="RI-2019.1-linux"
;;
rmb)
PLATFORM="rembrandt"
XTENSA_CORE="LX7_HiFi5_PROD"
HOST="xtensa-rmb-elf"
TOOLCHAIN_VER="RI-2019.1-linux"
;;
vangogh)
XTENSA_CORE="ACP_5_0_001_PROD"
HOST="xtensa-vangogh-elf"
TOOLCHAIN_VER="RI-2019.1-linux"
;;
acp_6_3)
XTENSA_CORE="ACP_6_3_HiFi5_PROD_Linux"
HOST="xtensa-acp_6_3-elf"
TOOLCHAIN_VER="RI-2021.6-linux"
;;
acp_7_0)
XTENSA_CORE="ACP_7_0_HiFi5_NNE_PROD"
HOST="xtensa-acp_7_0-elf"
TOOLCHAIN_VER="RI-2023.11-linux"
;;
# Mediatek
mt8186)
XTENSA_CORE="hifi5_7stg_I64D128"
HOST="xtensa-mt8186-elf"
TOOLCHAIN_VER="RI-2020.5-linux"
;;
mt8188)
XTENSA_CORE="hifi5_7stg_I64D128"
HOST="xtensa-mt8188-elf"
TOOLCHAIN_VER="RI-2020.5-linux"
;;
mt8195)
XTENSA_CORE="hifi4_8195_PROD"
HOST="xtensa-mt8195-elf"
TOOLCHAIN_VER="RI-2019.1-linux"
;;
*)
>&2 printf 'Unknown xtensa platform=%s\n' "$platform"
return 1
;;
esac
# Pre-zephyr "XTOS" build, testbench,...
case "$platform" in
mtl|lnl|ptl|acp_7_0)
SOF_CC_BASE='clang';;
*)
SOF_CC_BASE='xcc';;
esac
# For Zephyr unit tests
case "$platform" in
imx8*|mtl|lnl)
ZEPHYR_TOOLCHAIN_VARIANT='xt-clang';;
*) # The previous, main case/esac already caught invalid input.
# This won't hurt platforms that don't use Zephyr (it's not even
# exported).
ZEPHYR_TOOLCHAIN_VARIANT='xcc';;
esac