[PATCH v2 0/5] add custome commands for broadcom NS3 soc

This patch set adds commands specific to broadcom NS3 soc.
Changes from V1: -Address review comments from Simon, Update commit message. Rearrange header files. Add comments to macros. Use lower case hex. Rename struct name from nitro_img_header to img_header. Drop unnecessary type cast. Check returun value for env_set_hex(). Remove use of typedef. Command description correction.
Bharat Kumar Reddy Gooty (1): cmd: broadcom: add command for chimp handshake
Rayagonda Kokatanur (1): MAINTAINERS: update maintainers file for new files
Trac Hoang (1): cmd: broadcom: add bnxt boot command
Vikas Gupta (1): cmd: broadcom: add cmd to update bnxt image env variables
Vladimir Olovyannikov (1): board: ns3: kconfig: extend board kconfig with specific commands
MAINTAINERS | 4 + board/broadcom/bcmns3/Kconfig | 7 ++ cmd/Makefile | 2 + cmd/broadcom/Makefile | 6 ++ cmd/broadcom/chimp_boot.c | 37 ++++++++++ cmd/broadcom/chimp_handshake.c | 33 +++++++++ cmd/broadcom/nitro_image_load.c | 125 ++++++++++++++++++++++++++++++++ include/broadcom/chimp.h | 12 +++ 8 files changed, 226 insertions(+) create mode 100644 cmd/broadcom/Makefile create mode 100644 cmd/broadcom/chimp_boot.c create mode 100644 cmd/broadcom/chimp_handshake.c create mode 100644 cmd/broadcom/nitro_image_load.c

From: Trac Hoang trac.hoang@broadcom.com
Chimp is a core in Broadcom netxtream controller (bnxt). Add command to load binary to chimp and boot bnxt.
Signed-off-by: Trac Hoang trac.hoang@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com --- Changes from V1: -Address review comments from Simon, Update commit message. Rearrange header files. Add comments to macros.
cmd/broadcom/Makefile | 4 ++++ cmd/broadcom/chimp_boot.c | 37 +++++++++++++++++++++++++++++++++++++ include/broadcom/chimp.h | 6 ++++++ 3 files changed, 47 insertions(+) create mode 100644 cmd/broadcom/Makefile create mode 100644 cmd/broadcom/chimp_boot.c
diff --git a/cmd/broadcom/Makefile b/cmd/broadcom/Makefile new file mode 100644 index 0000000000..22ccf2f334 --- /dev/null +++ b/cmd/broadcom/Makefile @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright 2020 Broadcom + +obj-y += chimp_boot.o diff --git a/cmd/broadcom/chimp_boot.c b/cmd/broadcom/chimp_boot.c new file mode 100644 index 0000000000..16f2b612c4 --- /dev/null +++ b/cmd/broadcom/chimp_boot.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom + */ + +#include <common.h> +#include <command.h> +#include <broadcom/chimp.h> + +static int do_chimp_fastboot_secure(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + u32 health = 0; + + if (chimp_health_status_optee(&health)) { + pr_err("Chimp health command fail\n"); + return CMD_RET_FAILURE; + } + + if (health == BCM_CHIMP_RUNNIG_GOOD) { + printf("skip fastboot...\n"); + return CMD_RET_SUCCESS; + } + + if (chimp_fastboot_optee()) { + pr_err("Failed to load secure ChiMP image\n"); + return CMD_RET_FAILURE; + } + + return CMD_RET_SUCCESS; +} + +U_BOOT_CMD + (chimp_ld_secure, 1, 0, do_chimp_fastboot_secure, + "Invoke chimp fw load via optee", + "chimp_ld_secure\n" +); diff --git a/include/broadcom/chimp.h b/include/broadcom/chimp.h index 7f64152913..73bb1c21e9 100644 --- a/include/broadcom/chimp.h +++ b/include/broadcom/chimp.h @@ -9,6 +9,12 @@
#include <linux/compiler.h>
+/* + * Chimp binary has health status like initialization complete, + * crash or running fine + */ +#define BCM_CHIMP_RUNNIG_GOOD 0x8000 + /** * chimp_fastboot_optee() - api to load bnxt firmware *

On Thu, 20 Aug 2020 at 09:11, Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com wrote:
From: Trac Hoang trac.hoang@broadcom.com
Chimp is a core in Broadcom netxtream controller (bnxt). Add command to load binary to chimp and boot bnxt.
Signed-off-by: Trac Hoang trac.hoang@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com
Changes from V1: -Address review comments from Simon, Update commit message. Rearrange header files. Add comments to macros.
cmd/broadcom/Makefile | 4 ++++ cmd/broadcom/chimp_boot.c | 37 +++++++++++++++++++++++++++++++++++++ include/broadcom/chimp.h | 6 ++++++ 3 files changed, 47 insertions(+) create mode 100644 cmd/broadcom/Makefile create mode 100644 cmd/broadcom/chimp_boot.c
Reviewed-by: Simon Glass sjg@chromium.org

On Thu, Aug 20, 2020 at 08:41:04PM +0530, Rayagonda Kokatanur wrote:
From: Trac Hoang trac.hoang@broadcom.com
Chimp is a core in Broadcom netxtream controller (bnxt). Add command to load binary to chimp and boot bnxt.
Signed-off-by: Trac Hoang trac.hoang@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/next, thanks!

On Thu, Aug 20, 2020 at 08:41:04PM +0530, Rayagonda Kokatanur wrote:
From: Trac Hoang trac.hoang@broadcom.com
Chimp is a core in Broadcom netxtream controller (bnxt). Add command to load binary to chimp and boot bnxt.
Signed-off-by: Trac Hoang trac.hoang@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/next, thanks!

From: Vikas Gupta vikas.gupta@broadcom.com
Add command to update the environmental variables which are used to read the data from QSPI offsets and load the binaries to bnxt.
Signed-off-by: Vikas Gupta vikas.gupta@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org --- Changes from V1: -Address review comments from Simon, Rearrange header files. Use lower case hex. Rename struct name from nitro_img_header to img_header. Drop unnecessary type cast. Check returun value for env_set_hex().
cmd/broadcom/Makefile | 1 + cmd/broadcom/nitro_image_load.c | 125 ++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 cmd/broadcom/nitro_image_load.c
diff --git a/cmd/broadcom/Makefile b/cmd/broadcom/Makefile index 22ccf2f334..6cdece1a3a 100644 --- a/cmd/broadcom/Makefile +++ b/cmd/broadcom/Makefile @@ -2,3 +2,4 @@ # Copyright 2020 Broadcom
obj-y += chimp_boot.o +obj-y += nitro_image_load.o diff --git a/cmd/broadcom/nitro_image_load.c b/cmd/broadcom/nitro_image_load.c new file mode 100644 index 0000000000..4a36b300c4 --- /dev/null +++ b/cmd/broadcom/nitro_image_load.c @@ -0,0 +1,125 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom + */ + +#include <common.h> +#include <command.h> + +#define FW_IMAGE_SIG 0xff123456 +#define CFG_IMAGE_SIG 0xcf54321a + +/* + * structure for bin file + * signature: fw itb file + * size: fw itb file + * signature: NS3 config file + * size: NS3 config file + * Data: fw itb file + * ............................ + * ............................ + * Data: NS3 config file + * ............................ + * ............................ + */ + +static struct img_header { + u32 bin_sig; + u32 bin_size; + u32 cfg1_sig; + u32 cfg1_size; +} *img_header; + +static int env_set_val(const char *varname, ulong val) +{ + int ret; + + ret = env_set_hex(varname, val); + if (ret) + pr_err("Failed to %s env var\n", varname); + + return ret; +} + +static int do_spi_images_addr(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + uintptr_t images_load_addr; + uintptr_t spi_load_addr; + u32 len; + u32 spi_data_offset = sizeof(struct img_header); + + if (argc != 3) + return CMD_RET_USAGE; + + /* convert command parameter to fastboot address (base 16), i.e. hex */ + images_load_addr = simple_strtoul(argv[1], NULL, 16); + if (!images_load_addr) { + pr_err("Invalid load address\n"); + return CMD_RET_USAGE; + } + + spi_load_addr = simple_strtoul(argv[2], NULL, 16); + if (!spi_load_addr) { + pr_err("Invalid spi load address\n"); + return CMD_RET_USAGE; + } + + img_header = (struct img_header *)images_load_addr; + + if (img_header->bin_sig != FW_IMAGE_SIG) { + pr_err("Invalid Nitro bin file\n"); + goto error; + } + + if (env_set_val("spi_nitro_fw_itb_start_addr", 0)) + goto error; + + if (env_set_val("spi_nitro_fw_itb_len", 0)) + goto error; + + if (env_set_val("spi_nitro_fw_ns3_cfg_start_addr", 0)) + goto error; + + if (env_set_val("spi_nitro_fw_ns3_cfg_len", 0)) + goto error; + + len = img_header->bin_size; + + if (env_set_val("spi_nitro_fw_itb_start_addr", + (spi_load_addr + spi_data_offset))) + goto error; + + if (env_set_val("spi_nitro_fw_itb_len", img_header->bin_size)) + goto error; + + spi_data_offset += len; + + if (img_header->cfg1_sig == CFG_IMAGE_SIG) { + len = img_header->cfg1_size; + + if (env_set_val("spi_nitro_fw_ns3_cfg_start_addr", + (spi_load_addr + spi_data_offset))) + goto error; + + if (env_set_val("spi_nitro_fw_ns3_cfg_len", len)) + goto error; + + spi_data_offset += len; + } + + /* disable secure boot */ + if (env_set_val("nitro_fastboot_secure", 0)) + goto error; + + return CMD_RET_SUCCESS; + +error: + return CMD_RET_FAILURE; +} + +U_BOOT_CMD + (spi_nitro_images_addr, 3, 1, do_spi_images_addr, + "Load the bnxt bin header and sets envs ", + "spi_nitro_images_addr <load_addr> <spi_base_addr>\n" +);

On Thu, Aug 20, 2020 at 08:41:05PM +0530, Rayagonda Kokatanur wrote:
From: Vikas Gupta vikas.gupta@broadcom.com
Add command to update the environmental variables which are used to read the data from QSPI offsets and load the binaries to bnxt.
Signed-off-by: Vikas Gupta vikas.gupta@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/next, thanks!

From: Bharat Kumar Reddy Gooty bharat.gooty@broadcom.com
Add command for chimp handshake. Handshake is used to know chimp is loaded and booted successfully.
Signed-off-by: Bharat Kumar Reddy Gooty bharat.gooty@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org --- Changes from V1: -Address review comments from Simon, Rearrange header files. Remove use of typedef. Command description correction.
cmd/broadcom/Makefile | 1 + cmd/broadcom/chimp_handshake.c | 33 +++++++++++++++++++++++++++++++++ include/broadcom/chimp.h | 6 ++++++ 3 files changed, 40 insertions(+) create mode 100644 cmd/broadcom/chimp_handshake.c
diff --git a/cmd/broadcom/Makefile b/cmd/broadcom/Makefile index 6cdece1a3a..62268d98d0 100644 --- a/cmd/broadcom/Makefile +++ b/cmd/broadcom/Makefile @@ -3,3 +3,4 @@
obj-y += chimp_boot.o obj-y += nitro_image_load.o +obj-y += chimp_handshake.o diff --git a/cmd/broadcom/chimp_handshake.c b/cmd/broadcom/chimp_handshake.c new file mode 100644 index 0000000000..a90a73a6d7 --- /dev/null +++ b/cmd/broadcom/chimp_handshake.c @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom + */ + +#include <common.h> +#include <command.h> +#include <broadcom/chimp.h> + +/* This command should be called after loading the nitro binaries */ +static int do_chimp_hs(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + int ret = CMD_RET_USAGE; + u32 hstatus; + + /* Returns 1, if handshake call is success */ + if (chimp_handshake_status_optee(0, &hstatus)) + ret = CMD_RET_SUCCESS; + + if (hstatus == CHIMP_HANDSHAKE_SUCCESS) + printf("ChiMP Handshake successful\n"); + else + printf("ERROR: ChiMP Handshake status 0x%x\n", hstatus); + + return ret; +} + +U_BOOT_CMD + (chimp_hs, 1, 1, do_chimp_hs, + "Verify the Chimp handshake", + "chimp_hs\n" +); diff --git a/include/broadcom/chimp.h b/include/broadcom/chimp.h index 73bb1c21e9..738f73eefd 100644 --- a/include/broadcom/chimp.h +++ b/include/broadcom/chimp.h @@ -15,6 +15,12 @@ */ #define BCM_CHIMP_RUNNIG_GOOD 0x8000
+enum { + CHIMP_HANDSHAKE_SUCCESS = 0, + CHIMP_HANDSHAKE_WAIT_ERROR, + CHIMP_HANDSHAKE_WAIT_TIMEOUT, +}; + /** * chimp_fastboot_optee() - api to load bnxt firmware *

On Thu, Aug 20, 2020 at 08:41:06PM +0530, Rayagonda Kokatanur wrote:
From: Bharat Kumar Reddy Gooty bharat.gooty@broadcom.com
Add command for chimp handshake. Handshake is used to know chimp is loaded and booted successfully.
Signed-off-by: Bharat Kumar Reddy Gooty bharat.gooty@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/next, thanks!

From: Vladimir Olovyannikov vladimir.olovyannikov@broadcom.com
Extend Kconfig for the board with board-specific commands selection.
Signed-off-by: Vladimir Olovyannikov vladimir.olovyannikov@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org --- board/broadcom/bcmns3/Kconfig | 7 +++++++ cmd/Makefile | 2 ++ 2 files changed, 9 insertions(+)
diff --git a/board/broadcom/bcmns3/Kconfig b/board/broadcom/bcmns3/Kconfig index 8ce21f980d..cb73f98eae 100644 --- a/board/broadcom/bcmns3/Kconfig +++ b/board/broadcom/bcmns3/Kconfig @@ -12,4 +12,11 @@ config SYS_SOC config SYS_CONFIG_NAME default "bcm_ns3"
+config CMD_BCM_EXT_UTILS + bool "Enable Broadcom-specific U-Boot commands" + default y + help + Enable Broadcom specific U-Boot commands such as error log setup + command or any other commands specific to NS3 platform. + endif diff --git a/cmd/Makefile b/cmd/Makefile index 3a9c9747c9..c7a08ed109 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -197,6 +197,8 @@ obj-$(CONFIG_$(SPL_)CMD_TLV_EEPROM) += tlv_eeprom.o # core command obj-y += nvedit.o
+obj-$(CONFIG_CMD_BCM_EXT_UTILS) += broadcom/ + obj-$(CONFIG_TI_COMMON_CMD_OPTIONS) += ti/
filechk_data_gz = (echo "static const char data_gz[] ="; cat $< | scripts/bin2c; echo ";")

On Thu, Aug 20, 2020 at 08:41:07PM +0530, Rayagonda Kokatanur wrote:
From: Vladimir Olovyannikov vladimir.olovyannikov@broadcom.com
Extend Kconfig for the board with board-specific commands selection.
Signed-off-by: Vladimir Olovyannikov vladimir.olovyannikov@broadcom.com Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/next, thanks!

Update MAINTAINERS file for new files.
Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com --- MAINTAINERS | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS index 17ac45587b..2b00674d65 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1005,6 +1005,10 @@ F: arch/arm/dts/ns3-board.dts F: arch/arm/dts/ns3.dtsi F: arch/arm/cpu/armv8/bcmns3 F: arch/arm/include/asm/arch-bcmns3/ +F: cmd/broadcom/Makefile +F: cmd/broadcom/chimp_boot.c +F: cmd/broadcom/nitro_image_load.c +F: cmd/broadcom/chimp_handshake.c
TDA19988 HDMI ENCODER M: Liviu Dudau liviu.dudau@foss.arm.com

On Thu, 20 Aug 2020 at 09:11, Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com wrote:
Update MAINTAINERS file for new files.
Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com
MAINTAINERS | 4 ++++ 1 file changed, 4 insertions(+)
Reviewed-by: Simon Glass sjg@chromium.org

On Thu, Aug 20, 2020 at 08:41:08PM +0530, Rayagonda Kokatanur wrote:
Update MAINTAINERS file for new files.
Signed-off-by: Rayagonda Kokatanur rayagonda.kokatanur@broadcom.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/next, thanks!
participants (3)
-
Rayagonda Kokatanur
-
Simon Glass
-
Tom Rini