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 */

-- 

Reply via email to