This is an automated email from Gerrit. "Luca Hung <ychu...@nuvoton.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7797
-- gerrit commit e8e1f5d938cd35c4ee243cf342b946b92c432fbd Author: Luca Hung <ychu...@nuvoton.com> Date: Thu Aug 17 13:34:11 2023 +0800 flash/nor: add support for Nuvoton NPCX4/K3 series flash Added NPCX flash driver to support the Nuvoton NPCX4/K3 series microcontrollers. Add config file for these series. Change-Id: Ia2f89af7f12a3e153a1c848b0e5f24f948c6aec2 Signed-off-by: Luca Hung <ychu...@nuvoton.com> Signed-off-by: Mulin CHao <mlc...@nuvoton.com> diff --git a/src/flash/nor/npcx.c b/src/flash/nor/npcx.c index b98683a46b..f53297e252 100644 --- a/src/flash/nor/npcx.c +++ b/src/flash/nor/npcx.c @@ -4,6 +4,7 @@ * Copyright (C) 2020 by Nuvoton Technology Corporation * Mulin Chao <mlc...@nuvoton.com> * Wealian Liao <whl...@nuvoton.com> + * Luca Hung <ychu...@nuvoton.com> */ #ifdef HAVE_CONFIG_H @@ -251,17 +252,6 @@ static int npcx_probe(struct flash_bank *bank) npcx_bank->buffer_addr = NPCX_FLASH_LOADER_BUFFER_ADDR; npcx_bank->params_addr = NPCX_FLASH_LOADER_PARAMS_ADDR; - /* Select FIU version */ - if (strcmp(bank->target->cmd_name, "npcx.cpu") == 0) { - npcx_bank->fiu_ver = NPCX_FIU_NPCX; - } else if (strcmp(bank->target->cmd_name, "npcx_v2.cpu") == 0) { - npcx_bank->fiu_ver = NPCX_FIU_NPCX_V2; - } else if (strcmp(bank->target->cmd_name, "npck.cpu") == 0) { - npcx_bank->fiu_ver = NPCX_FIU_NPCK; - } else { - LOG_ERROR("%s is not a valid target", bank->target->cmd_name); - return ERROR_TARGET_INVALID; - } int retval = npcx_get_flash_id(bank, &flash_id); if (retval != ERROR_OK) @@ -312,7 +302,7 @@ FLASH_BANK_COMMAND_HANDLER(npcx_flash_bank_command) { struct npcx_flash_bank *npcx_bank; - if (CMD_ARGC < 6) + if (CMD_ARGC < 6 || CMD_ARGC > 7) return ERROR_COMMAND_SYNTAX_ERROR; npcx_bank = calloc(1, sizeof(struct npcx_flash_bank)); @@ -321,8 +311,32 @@ FLASH_BANK_COMMAND_HANDLER(npcx_flash_bank_command) return ERROR_FAIL; } + const char *fiu; + if (CMD_ARGC == 6) { + LOG_WARNING("No FIU is selection, using default."); + npcx_bank->fiu_ver = NPCX_FIU_NPCX; + } + + if (CMD_ARGC == 7) { + fiu = CMD_ARGV[6]; + if (strcmp(fiu, "npcx.fiu") == 0) { + npcx_bank->fiu_ver = NPCX_FIU_NPCX; + } else if (strcmp(fiu, "npcx_v2.fiu") == 0) { + npcx_bank->fiu_ver = NPCX_FIU_NPCX_V2; + } else if (strcmp(fiu, "npck.fiu") == 0) { + npcx_bank->fiu_ver = NPCX_FIU_NPCK; + } else { + LOG_ERROR("%s is not a valid target", fiu); + return ERROR_TARGET_INVALID; + } + } + /* Initialize private flash information */ - npcx_bank->family_name = "npcx"; + if (strcmp(CMD_ARGV[5], "npck.cpu") == 0) + npcx_bank->family_name = "npck"; + else + npcx_bank->family_name = "npcx"; + npcx_bank->sector_length = NPCX_FLASH_ERASE_SIZE; /* Finish initialization of bank */ --