summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2017-10-06 11:28:30 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2017-10-06 12:10:33 +0200
commit698779e3e898610800088b1ce6c6a2a25803b91c (patch)
treea2808f31ff1f655b5e055ae061814d70bcf87439
parent3f1e4a0b1aa3c77d27a85fefb00c9c575eab715b (diff)
downloadrockbox-698779e3e898610800088b1ce6c6a2a25803b91c.tar.gz
rockbox-698779e3e898610800088b1ce6c6a2a25803b91c.zip
sonynwz: add nvp nodes for NW-A40/ZX300, various fixes for tools
We still miss the model IDS for those device so scsitool won't be able to recognize them automatically. Change-Id: I17ae0f0d95c011cea8e289def63c7673b6c4b667
-rw-r--r--firmware/target/hosted/sonynwz/nwz-db.c147
-rw-r--r--firmware/target/hosted/sonynwz/nwz-db.h4
-rwxr-xr-xutils/nwztools/database/gen_db.py15
-rw-r--r--utils/nwztools/database/nvp/nw-a40.txt92
-rw-r--r--utils/nwztools/database/nvp/nw-zx300.txt92
-rwxr-xr-xutils/nwztools/database/nvp/parse_nvp_header.sh3
-rw-r--r--utils/nwztools/database/series.txt2
7 files changed, 351 insertions, 4 deletions
diff --git a/firmware/target/hosted/sonynwz/nwz-db.c b/firmware/target/hosted/sonynwz/nwz-db.c
index 2aef1e3a49..96c9c6e84f 100644
--- a/firmware/target/hosted/sonynwz/nwz-db.c
+++ b/firmware/target/hosted/sonynwz/nwz-db.c
@@ -224,6 +224,7 @@ static int nvp_index_0ac81d[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 35,
[NWZ_NVP_BTC] = NWZ_NVP_INVALID,
[NWZ_NVP_BTI] = 1,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 3,
[NWZ_NVP_CTR] = NWZ_NVP_INVALID,
@@ -308,6 +309,7 @@ static int nvp_index_0ac81d[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = NWZ_NVP_INVALID,
[NWZ_NVP_PSK] = NWZ_NVP_INVALID,
[NWZ_NVP_PTS] = 75,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = NWZ_NVP_INVALID,
[NWZ_NVP_RND] = 28,
[NWZ_NVP_RTC] = 34,
@@ -335,6 +337,131 @@ static int nvp_index_0ac81d[NWZ_NVP_COUNT] =
[NWZ_NVP_VRT] = NWZ_NVP_INVALID,
};
+static int nvp_index_139d65[NWZ_NVP_COUNT] =
+{
+ [NWZ_NVP_APD] = 78,
+ [NWZ_NVP_APP] = NWZ_NVP_INVALID,
+ [NWZ_NVP_BFD] = 21,
+ [NWZ_NVP_BFP] = 20,
+ [NWZ_NVP_BLF] = 79,
+ [NWZ_NVP_BML] = 22,
+ [NWZ_NVP_BOK] = NWZ_NVP_INVALID,
+ [NWZ_NVP_BPR] = 19,
+ [NWZ_NVP_BTC] = 85,
+ [NWZ_NVP_BTI] = 72,
+ [NWZ_NVP_CLG] = 15,
+ [NWZ_NVP_CLV] = 68,
+ [NWZ_NVP_CNG] = 23,
+ [NWZ_NVP_CTR] = 90,
+ [NWZ_NVP_DBA] = NWZ_NVP_INVALID,
+ [NWZ_NVP_DBG] = 0,
+ [NWZ_NVP_DBI] = 88,
+ [NWZ_NVP_DBS] = NWZ_NVP_INVALID,
+ [NWZ_NVP_DBV] = 25,
+ [NWZ_NVP_DCC] = NWZ_NVP_INVALID,
+ [NWZ_NVP_DG0] = NWZ_NVP_INVALID,
+ [NWZ_NVP_DG1] = NWZ_NVP_INVALID,
+ [NWZ_NVP_DOR] = NWZ_NVP_INVALID,
+ [NWZ_NVP_E00] = 36,
+ [NWZ_NVP_E01] = 37,
+ [NWZ_NVP_E02] = 38,
+ [NWZ_NVP_E03] = 39,
+ [NWZ_NVP_E04] = 40,
+ [NWZ_NVP_E05] = 41,
+ [NWZ_NVP_E06] = 42,
+ [NWZ_NVP_E07] = 43,
+ [NWZ_NVP_E08] = 44,
+ [NWZ_NVP_E09] = 45,
+ [NWZ_NVP_E10] = 46,
+ [NWZ_NVP_E11] = 47,
+ [NWZ_NVP_E12] = 48,
+ [NWZ_NVP_E13] = 49,
+ [NWZ_NVP_E14] = 50,
+ [NWZ_NVP_E15] = 51,
+ [NWZ_NVP_E16] = 52,
+ [NWZ_NVP_E17] = 53,
+ [NWZ_NVP_E18] = 54,
+ [NWZ_NVP_E19] = 55,
+ [NWZ_NVP_E20] = 56,
+ [NWZ_NVP_E21] = 57,
+ [NWZ_NVP_E22] = 58,
+ [NWZ_NVP_E23] = 59,
+ [NWZ_NVP_E24] = 60,
+ [NWZ_NVP_E25] = 61,
+ [NWZ_NVP_E26] = 62,
+ [NWZ_NVP_E27] = 63,
+ [NWZ_NVP_E28] = 64,
+ [NWZ_NVP_E29] = 65,
+ [NWZ_NVP_E30] = 66,
+ [NWZ_NVP_E31] = 67,
+ [NWZ_NVP_EDW] = 71,
+ [NWZ_NVP_EP0] = NWZ_NVP_INVALID,
+ [NWZ_NVP_EP1] = NWZ_NVP_INVALID,
+ [NWZ_NVP_EP2] = NWZ_NVP_INVALID,
+ [NWZ_NVP_EP3] = NWZ_NVP_INVALID,
+ [NWZ_NVP_ERI] = 76,
+ [NWZ_NVP_EXM] = NWZ_NVP_INVALID,
+ [NWZ_NVP_FMP] = NWZ_NVP_INVALID,
+ [NWZ_NVP_FNI] = 82,
+ [NWZ_NVP_FPI] = 33,
+ [NWZ_NVP_FUI] = 75,
+ [NWZ_NVP_FUP] = 3,
+ [NWZ_NVP_FUR] = 26,
+ [NWZ_NVP_FVI] = 31,
+ [NWZ_NVP_GTY] = 14,
+ [NWZ_NVP_HDI] = 73,
+ [NWZ_NVP_HLD] = 5,
+ [NWZ_NVP_INS] = 89,
+ [NWZ_NVP_IPT] = NWZ_NVP_INVALID,
+ [NWZ_NVP_KAS] = 11,
+ [NWZ_NVP_LBI] = 74,
+ [NWZ_NVP_LYR] = 24,
+ [NWZ_NVP_MAC] = 32,
+ [NWZ_NVP_MCR] = NWZ_NVP_INVALID,
+ [NWZ_NVP_MDK] = 30,
+ [NWZ_NVP_MDL] = NWZ_NVP_INVALID,
+ [NWZ_NVP_MID] = 7,
+ [NWZ_NVP_MLK] = NWZ_NVP_INVALID,
+ [NWZ_NVP_MSC] = NWZ_NVP_INVALID,
+ [NWZ_NVP_MSO] = 86,
+ [NWZ_NVP_MTM] = NWZ_NVP_INVALID,
+ [NWZ_NVP_MUK] = NWZ_NVP_INVALID,
+ [NWZ_NVP_NCP] = 17,
+ [NWZ_NVP_NVR] = 77,
+ [NWZ_NVP_PCD] = 8,
+ [NWZ_NVP_PCI] = 87,
+ [NWZ_NVP_PNC] = NWZ_NVP_INVALID,
+ [NWZ_NVP_PRK] = 4,
+ [NWZ_NVP_PSK] = 18,
+ [NWZ_NVP_PTS] = NWZ_NVP_INVALID,
+ [NWZ_NVP_PWD] = 6,
+ [NWZ_NVP_RBT] = 70,
+ [NWZ_NVP_RND] = NWZ_NVP_INVALID,
+ [NWZ_NVP_RTC] = NWZ_NVP_INVALID,
+ [NWZ_NVP_SDC] = NWZ_NVP_INVALID,
+ [NWZ_NVP_SDP] = 16,
+ [NWZ_NVP_SER] = 9,
+ [NWZ_NVP_SFI] = NWZ_NVP_INVALID,
+ [NWZ_NVP_SHE] = 84,
+ [NWZ_NVP_SHP] = 12,
+ [NWZ_NVP_SID] = 83,
+ [NWZ_NVP_SKD] = 28,
+ [NWZ_NVP_SKT] = NWZ_NVP_INVALID,
+ [NWZ_NVP_SKU] = 91,
+ [NWZ_NVP_SLP] = 80,
+ [NWZ_NVP_SPS] = 69,
+ [NWZ_NVP_SYI] = 1,
+ [NWZ_NVP_TR0] = 34,
+ [NWZ_NVP_TR1] = 35,
+ [NWZ_NVP_TST] = 13,
+ [NWZ_NVP_UBP] = 2,
+ [NWZ_NVP_UFN] = 10,
+ [NWZ_NVP_UMS] = 27,
+ [NWZ_NVP_UPS] = 29,
+ [NWZ_NVP_VAR] = NWZ_NVP_INVALID,
+ [NWZ_NVP_VRT] = 81,
+};
+
static int nvp_index_28dc2c[NWZ_NVP_COUNT] =
{
[NWZ_NVP_APD] = 78,
@@ -347,6 +474,7 @@ static int nvp_index_28dc2c[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 19,
[NWZ_NVP_BTC] = 85,
[NWZ_NVP_BTI] = 72,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 23,
[NWZ_NVP_CTR] = NWZ_NVP_INVALID,
@@ -431,6 +559,7 @@ static int nvp_index_28dc2c[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = NWZ_NVP_INVALID,
[NWZ_NVP_PSK] = 18,
[NWZ_NVP_PTS] = 77,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = NWZ_NVP_INVALID,
[NWZ_NVP_RND] = 27,
[NWZ_NVP_RTC] = 6,
@@ -470,6 +599,7 @@ static int nvp_index_398250[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 19,
[NWZ_NVP_BTC] = 85,
[NWZ_NVP_BTI] = 72,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 23,
[NWZ_NVP_CTR] = 90,
@@ -554,6 +684,7 @@ static int nvp_index_398250[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = 4,
[NWZ_NVP_PSK] = 18,
[NWZ_NVP_PTS] = NWZ_NVP_INVALID,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = 70,
[NWZ_NVP_RND] = NWZ_NVP_INVALID,
[NWZ_NVP_RTC] = 6,
@@ -593,6 +724,7 @@ static int nvp_index_4edba7[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 35,
[NWZ_NVP_BTC] = NWZ_NVP_INVALID,
[NWZ_NVP_BTI] = 1,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 3,
[NWZ_NVP_CTR] = NWZ_NVP_INVALID,
@@ -677,6 +809,7 @@ static int nvp_index_4edba7[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = NWZ_NVP_INVALID,
[NWZ_NVP_PSK] = NWZ_NVP_INVALID,
[NWZ_NVP_PTS] = 75,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = NWZ_NVP_INVALID,
[NWZ_NVP_RND] = 28,
[NWZ_NVP_RTC] = 34,
@@ -716,6 +849,7 @@ static int nvp_index_6485c8[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 19,
[NWZ_NVP_BTC] = 85,
[NWZ_NVP_BTI] = 72,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 23,
[NWZ_NVP_CTR] = NWZ_NVP_INVALID,
@@ -800,6 +934,7 @@ static int nvp_index_6485c8[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = NWZ_NVP_INVALID,
[NWZ_NVP_PSK] = 18,
[NWZ_NVP_PTS] = 77,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = NWZ_NVP_INVALID,
[NWZ_NVP_RND] = 27,
[NWZ_NVP_RTC] = 6,
@@ -839,6 +974,7 @@ static int nvp_index_92faee[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 19,
[NWZ_NVP_BTC] = 85,
[NWZ_NVP_BTI] = 72,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 23,
[NWZ_NVP_CTR] = NWZ_NVP_INVALID,
@@ -923,6 +1059,7 @@ static int nvp_index_92faee[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = NWZ_NVP_INVALID,
[NWZ_NVP_PSK] = 18,
[NWZ_NVP_PTS] = 77,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = NWZ_NVP_INVALID,
[NWZ_NVP_RND] = 27,
[NWZ_NVP_RTC] = 6,
@@ -962,6 +1099,7 @@ static int nvp_index_f505c8[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = 35,
[NWZ_NVP_BTC] = 27,
[NWZ_NVP_BTI] = 1,
+ [NWZ_NVP_CLG] = NWZ_NVP_INVALID,
[NWZ_NVP_CLV] = 68,
[NWZ_NVP_CNG] = 3,
[NWZ_NVP_CTR] = NWZ_NVP_INVALID,
@@ -1046,6 +1184,7 @@ static int nvp_index_f505c8[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = NWZ_NVP_INVALID,
[NWZ_NVP_PSK] = 86,
[NWZ_NVP_PTS] = 75,
+ [NWZ_NVP_PWD] = NWZ_NVP_INVALID,
[NWZ_NVP_RBT] = NWZ_NVP_INVALID,
[NWZ_NVP_RND] = 28,
[NWZ_NVP_RTC] = 34,
@@ -1085,6 +1224,7 @@ struct nwz_nvp_info_t nwz_nvp[NWZ_NVP_COUNT] =
[NWZ_NVP_BPR] = { "bpr", 2048, "bluetooth address | bluetooth parameter" },
[NWZ_NVP_BTC] = { "btc", 4, "battery calibration" },
[NWZ_NVP_BTI] = { "bti", 262144, "boot image" },
+ [NWZ_NVP_CLG] = { "clg", 0, "" },
[NWZ_NVP_CLV] = { "clv", 4, "color variation" },
[NWZ_NVP_CNG] = { "cng", 704, "aad key | aad/empr key" },
[NWZ_NVP_CTR] = { "ctr", 0, "" },
@@ -1169,6 +1309,7 @@ struct nwz_nvp_info_t nwz_nvp[NWZ_NVP_COUNT] =
[NWZ_NVP_PRK] = { "prk", 0, "" },
[NWZ_NVP_PSK] = { "psk", 512, "bluetooth pskey" },
[NWZ_NVP_PTS] = { "pts", 4, "wifi protected setup" },
+ [NWZ_NVP_PWD] = { "pwd", 0, "" },
[NWZ_NVP_RBT] = { "rbt", 0, "" },
[NWZ_NVP_RND] = { "rnd", 64, "random data | wmt key" },
[NWZ_NVP_RTC] = { "rtc", 16, "rtc alarm" },
@@ -1205,6 +1346,8 @@ static unsigned long models_nw_a20[] = { 0x1d000001, 0x1d000002, 0x1d000004,
static unsigned long models_nw_a30[] = { 0x22000004, 0x22000005, 0x22000006 };
+static unsigned long models_nw_a40[] = { };
+
static unsigned long models_nwz_a720[] = { 0x3030001, 0x3030002, 0x3030004,
0x3020001, 0x3020002, 0x3020004 };
@@ -1294,6 +1437,8 @@ static unsigned long models_nwz_x1000[] = { 0x5000002, 0x5000004, 0x5000005,
static unsigned long models_nw_zx100[] = { 0x1c000007, 0x1c000001, 0x1c000002,
0x1c000004, 0x1c000005, 0x1c000006 };
+static unsigned long models_nw_zx300[] = { };
+
static unsigned long models_nwz_noname[] = { 0x5010002, 0x5010004, 0x5010005 };
struct nwz_series_info_t nwz_series[NWZ_SERIES_COUNT] =
@@ -1301,6 +1446,7 @@ struct nwz_series_info_t nwz_series[NWZ_SERIES_COUNT] =
{ "nwz-a10", "NWZ-A10 Series", 10, models_nwz_a10, &nvp_index_92faee },
{ "nw-a20", "NW-A20 Series", 6, models_nw_a20, &nvp_index_92faee },
{ "nw-a30", "NW-A30 Series", 3, models_nw_a30, &nvp_index_398250 },
+ { "nw-a40", "NW-A40 Series", 0, models_nw_a40, &nvp_index_139d65 },
{ "nwz-a720", "NWZ-A720 Series", 6, models_nwz_a720, 0 },
{ "nwz-a810", "NWZ-A810 Series", 3, models_nwz_a810, 0 },
{ "nwz-a820", "NWZ-A820 Series", 6, models_nwz_a820, 0 },
@@ -1333,5 +1479,6 @@ struct nwz_series_info_t nwz_series[NWZ_SERIES_COUNT] =
{ "nw-wm1", "NW-WM1 Series", 2, models_nw_wm1, &nvp_index_398250 },
{ "nwz-x1000", "NWZ-X1000 Series", 9, models_nwz_x1000, &nvp_index_4edba7 },
{ "nw-zx100", "NW-ZX100 Series", 6, models_nw_zx100, &nvp_index_92faee },
+ { "nw-zx300", "NW-ZX300 Series", 0, models_nw_zx300, &nvp_index_139d65 },
{ "nwz-noname", "NONAME", 3, models_nwz_noname, 0 },
};
diff --git a/firmware/target/hosted/sonynwz/nwz-db.h b/firmware/target/hosted/sonynwz/nwz-db.h
index cb130f96a2..d032e27d04 100644
--- a/firmware/target/hosted/sonynwz/nwz-db.h
+++ b/firmware/target/hosted/sonynwz/nwz-db.h
@@ -35,6 +35,7 @@ enum nwz_nvp_node_t
NWZ_NVP_BPR, /* bluetooth address | bluetooth parameter */
NWZ_NVP_BTC, /* battery calibration */
NWZ_NVP_BTI, /* boot image */
+ NWZ_NVP_CLG, /* */
NWZ_NVP_CLV, /* color variation */
NWZ_NVP_CNG, /* aad key | aad/empr key */
NWZ_NVP_CTR, /* */
@@ -119,6 +120,7 @@ enum nwz_nvp_node_t
NWZ_NVP_PRK, /* */
NWZ_NVP_PSK, /* bluetooth pskey */
NWZ_NVP_PTS, /* wifi protected setup */
+ NWZ_NVP_PWD, /* */
NWZ_NVP_RBT, /* */
NWZ_NVP_RND, /* random data | wmt key */
NWZ_NVP_RTC, /* rtc alarm */
@@ -152,7 +154,7 @@ enum nwz_nvp_node_t
/* Number of models */
#define NWZ_MODEL_COUNT 186
/* Number of series */
-#define NWZ_SERIES_COUNT 36
+#define NWZ_SERIES_COUNT 38
/* NVP node info */
struct nwz_nvp_info_t
diff --git a/utils/nwztools/database/gen_db.py b/utils/nwztools/database/gen_db.py
index be4cc34db0..23f4e3f474 100755
--- a/utils/nwztools/database/gen_db.py
+++ b/utils/nwztools/database/gen_db.py
@@ -4,6 +4,17 @@ import os
import re
import subprocess
import hashlib
+import sys
+
+# arguments
+if len(sys.argv) != 2:
+ print("Usage: %s output_directory" % sys.argv[0])
+ exit(1)
+output_directory = sys.argv[1]
+# check path is valid
+if not os.path.isdir(output_directory):
+ print("Error: '%s' is not a valid directory" % output_directory)
+ exit(1)
# parse models.txt
g_models = []
@@ -200,7 +211,7 @@ extern struct nwz_series_info_t nwz_series[NWZ_SERIES_COUNT];
#endif /* __NWZ_DB_H__ */
"""
-with open("nwz-db.h", "w") as fp:
+with open(os.path.join(output_directory, "nwz-db.h"), "w") as fp:
fp.write(header_begin)
# generate list of all nvp nodes
for name in sorted(g_nvp_names):
@@ -256,7 +267,7 @@ def by_name(nvp_entry):
def codename_to_c(codename):
return re.sub('[^a-zA-Z0-9]', '_', codename, 0)
-with open("nwz-db.c", "w") as fp:
+with open(os.path.join(output_directory, "nwz-db.c"), "w") as fp:
fp.write(impl_begin)
# generate model list (sort by mid)
for model in sorted(g_models, key = by_mid):
diff --git a/utils/nwztools/database/nvp/nw-a40.txt b/utils/nwztools/database/nvp/nw-a40.txt
new file mode 100644
index 0000000000..ebe8433824
--- /dev/null
+++ b/utils/nwztools/database/nvp/nw-a40.txt
@@ -0,0 +1,92 @@
+dbg,000
+syi,001
+ubp,002
+fup,003
+prk,004
+hld,005
+pwd,006
+mid,007
+pcd,008
+ser,009
+ufn,010
+kas,011
+shp,012
+tst,013
+gty,014
+clg,015
+sdp,016
+ncp,017
+psk,018
+nvr,077
+she,084
+btc,085
+ins,089
+ctr,090
+sku,091
+bpr,019
+bfp,020
+bfd,021
+bml,022
+apd,078
+blf,079
+slp,080
+vrt,081
+fni,082
+sid,083
+mso,086
+cng,023
+lyr,024
+dbv,025
+fur,026
+ums,027
+skd,028
+ups,029
+mdk,030
+fvi,031
+mac,032
+fpi,033
+tr0,034
+tr1,035
+e00,036
+e01,037
+e02,038
+e03,039
+e04,040
+e05,041
+e06,042
+e07,043
+e08,044
+e09,045
+e10,046
+e11,047
+e12,048
+e13,049
+e14,050
+e15,051
+e16,052
+e17,053
+e18,054
+e19,055
+e20,056
+e21,057
+e22,058
+e23,059
+e24,060
+e25,061
+e26,062
+e27,063
+e28,064
+e29,065
+e30,066
+e31,067
+clv,068
+sps,069
+rbt,070
+edw,071
+bti,072
+hdi,073
+lbi,074
+fui,075
+eri,076
+pci,087
+dbi,088
diff --git a/utils/nwztools/database/nvp/nw-zx300.txt b/utils/nwztools/database/nvp/nw-zx300.txt
new file mode 100644
index 0000000000..ebe8433824
--- /dev/null
+++ b/utils/nwztools/database/nvp/nw-zx300.txt
@@ -0,0 +1,92 @@
+dbg,000
+syi,001
+ubp,002
+fup,003
+prk,004
+hld,005
+pwd,006
+mid,007
+pcd,008
+ser,009
+ufn,010
+kas,011
+shp,012
+tst,013
+gty,014
+clg,015
+sdp,016
+ncp,017
+psk,018
+nvr,077
+she,084
+btc,085
+ins,089
+ctr,090
+sku,091
+bpr,019
+bfp,020
+bfd,021
+bml,022
+apd,078
+blf,079
+slp,080
+vrt,081
+fni,082
+sid,083
+mso,086
+cng,023
+lyr,024
+dbv,025
+fur,026
+ums,027
+skd,028
+ups,029
+mdk,030
+fvi,031
+mac,032
+fpi,033
+tr0,034
+tr1,035
+e00,036
+e01,037
+e02,038
+e03,039
+e04,040
+e05,041
+e06,042
+e07,043
+e08,044
+e09,045
+e10,046
+e11,047
+e12,048
+e13,049
+e14,050
+e15,051
+e16,052
+e17,053
+e18,054
+e19,055
+e20,056
+e21,057
+e22,058
+e23,059
+e24,060
+e25,061
+e26,062
+e27,063
+e28,064
+e29,065
+e30,066
+e31,067
+clv,068
+sps,069
+rbt,070
+edw,071
+bti,072
+hdi,073
+lbi,074
+fui,075
+eri,076
+pci,087
+dbi,088
diff --git a/utils/nwztools/database/nvp/parse_nvp_header.sh b/utils/nwztools/database/nvp/parse_nvp_header.sh
index ee2be93516..88fdb1dd4b 100755
--- a/utils/nwztools/database/nvp/parse_nvp_header.sh
+++ b/utils/nwztools/database/nvp/parse_nvp_header.sh
@@ -38,7 +38,8 @@ fi
if [ "`echo "$LIST" | grep "icx_nvp_emmc.h" | wc -l`" = "1" ]; then
LIST=`echo "$LIST" | grep "icx_nvp_emmc.h"`
else
- LIST=`echo "$LIST" | grep 'icx[[:digit:]]*_nvp[[:alpha:]_]*.h'`
+# otherwise find any file named icx_nvp*.h but filter out icx_nvp_wrapper.h
+ LIST=`echo "$LIST" | grep 'icx[[:digit:]]*_nvp[[:alpha:]_]*.h' | sed '/icx_nvp_wrapper/d'`
fi
LIST_CNT=`echo "$LIST" | wc -l`
if [ "$LIST_CNT" = "0" ]; then
diff --git a/utils/nwztools/database/series.txt b/utils/nwztools/database/series.txt
index 2128ad2abb..b51897e70d 100644
--- a/utils/nwztools/database/series.txt
+++ b/utils/nwztools/database/series.txt
@@ -1,6 +1,7 @@
nwz-a10,NWZ-A10 Series,0x1a000001,0x1a000002,0x1a000004,0x1a000005,0x1a000006,0x1a010001,0x1a010002,0x1a010004,0x1a010005,0x1a010006
nw-a20,NW-A20 Series,0x1d000001,0x1d000002,0x1d000004,0x1d000005,0x1d000006,0x1d000007
nw-a30,NW-A30 Series,0x22000004,0x22000005,0x22000006
+nw-a40,NW-A40 Series,
nwz-a720,NWZ-A720 Series,0x3030001,0x3030002,0x3030004,0x3020001,0x3020002,0x3020004
nwz-a810,NWZ-A810 Series,0x10000,0x10001,0x10002
nwz-a820,NWZ-A820 Series,0x3010001,0x3010002,0x3010004,0x3000001,0x3000002,0x3000004
@@ -33,4 +34,5 @@ nw-s780,NW-S780 Series,0x19000001,0x19000002,0x19000004,0x19000005
nw-wm1,NW-WM1 Series,0x20000007,0x21000008
nwz-x1000,NWZ-X1000 Series,0x5000002,0x5000004,0x5000005,0x5020002,0x5040002,0x5020004,0x5040004,0x5020005,0x5040005
nw-zx100,NW-ZX100 Series,0x1c000007,0x1c000001,0x1c000002,0x1c000004,0x1c000005,0x1c000006
+nw-zx300,NW-ZX300 Series,
nwz-noname,NONAME,0x5010002,0x5010004,0x5010005