From 5c7166d387bbae63456f9820e0fd0658c503f07b Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 29 Apr 2021 09:46:32 +0200 Subject: [PATCH] boot/opensbi: add support for version configuration OpenSBI contains platform-specific code, so very much like Linux, U-Boot or other bootloaders, using the upstream version of OpenSBI will very often not be sufficient. This commit therefore adds the possibility of specifying a custom version of OpenSBI, either custom from upstream, custom tarball, or custom from Git. Support for other version control systems has not been implemented for now, but could be added later if needed. Signed-off-by: Thomas Petazzoni Reviewed-by: Bin Meng Signed-off-by: Peter Korsgaard --- boot/opensbi/Config.in | 51 +++++++++++++++++++++++++++++++++++++++++ boot/opensbi/opensbi.mk | 19 ++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in index b9b0ace8af..83f40f04fa 100644 --- a/boot/opensbi/Config.in +++ b/boot/opensbi/Config.in @@ -13,6 +13,57 @@ config BR2_TARGET_OPENSBI https://github.com/riscv/opensbi.git if BR2_TARGET_OPENSBI +choice + prompt "OpenSBI Version" + help + Select the specific OpenSBI version you want to use + +config BR2_TARGET_OPENSBI_LATEST_VERSION + bool "0.8" + +config BR2_TARGET_OPENSBI_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_OPENSBI_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_OPENSBI_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE + string "OpenSBI version" + depends on BR2_TARGET_OPENSBI_CUSTOM_VERSION + +config BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION + string "URL of custom OpenSBI tarball" + depends on BR2_TARGET_OPENSBI_CUSTOM_TARBALL + +if BR2_TARGET_OPENSBI_CUSTOM_GIT + +config BR2_TARGET_OPENSBI_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git. E.G. a + sha id, a tag, branch, .. + +endif + +config BR2_TARGET_OPENSBI_VERSION + string + default "0.8" if BR2_TARGET_OPENSBI_LATEST_VERSION + default BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_OPENSBI_CUSTOM_VERSION + default "custom" if BR2_TARGET_OPENSBI_CUSTOM_TARBALL + default BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION \ + if BR2_TARGET_OPENSBI_CUSTOM_GIT + config BR2_TARGET_OPENSBI_PLAT string "OpenSBI Platform" default "" diff --git a/boot/opensbi/opensbi.mk b/boot/opensbi/opensbi.mk index 60b87c268d..250a6078af 100644 --- a/boot/opensbi/opensbi.mk +++ b/boot/opensbi/opensbi.mk @@ -4,13 +4,30 @@ # ################################################################################ -OPENSBI_VERSION = 0.8 +OPENSBI_VERSION = $(call qstrip,$(BR2_TARGET_OPENSBI_VERSION)) + +ifeq ($(OPENSBI_VERSION),custom) +# Handle custom OpenSBI tarballs as specified by the configuration +OPENSBI_TARBALL = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION)) +OPENSBI_SITE = $(patsubst %/,%,$(dir $(OPENSBI_TARBALL))) +OPENSBI_SOURCE = $(notdir $(OPENSBI_TARBALL)) +else ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_GIT),y) +OPENSBI_SITE = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_REPO_URL)) +OPENSBI_SITE_METHOD = git +else +# Handle official OpenSBI versions OPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION)) +endif + OPENSBI_LICENSE = BSD-2-Clause OPENSBI_LICENSE_FILES = COPYING.BSD OPENSBI_INSTALL_TARGET = NO OPENSBI_INSTALL_STAGING = YES +ifeq ($(BR2_TARGET_OPENSBI)$(BR2_TARGET_OPENSBI_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(OPENSBI_SOURCE) +endif + OPENSBI_MAKE_ENV = \ CROSS_COMPILE=$(TARGET_CROSS)